一、ddt(基于unittest)

实例:字典解包【{},{}】

test_data=t.read_excel(mode,case_list)
@ddt
class Interface(unittest.TestCase):
def setUp(self):
logger.info("测试用例开始了。。。。")
@data(*test_data)
@unpack
def test_case(self,id,interface,method,url,data,sql,Expected_code):#直接拆开用
#logger.info("正在执行%s条用例:"%id)
logger.info("正在执行"+"["+str(interface)+"]"+"接口"+str(id)+"条用例")
dict={}
request_result = HttpRequest().http_request(method, url, data)

二、pytest.mark.parametrize()

示例:test.py

import pytest
class TestApi:

#第一种: 列表args解包,输出多个参数
@pytest.mark.parametrize('name,age,a', [["百里", "18","19"], ["星耀", "20","21"]]) # 解包操作,输出多个参数
def test_api_1(self, name, age,a):
print(name, age)

# 第二种 字典 args解包,输出多个参数
t=[{'id': 1, 'module': '注册', 'description': '输入手机号、密码、注册名', 'method': 'get', 'url': 'http://test.lemonban.com//futureloan/mvc/api/member/register','data': {'mobilephone': '18501026696', 'pwd': '123456', 'regname': '666'},'sql': {'my_sql': 'select count(*) from member where mobilephone=%s', 'condition': '18501026696', 'result': 1, 'code': 0},'exception_code': 10001, 'exception_sql_select': 1},
{'id': 2, 'module': '登录', 'description': '输入正确手机号、密码', 'method': 'get', 'url': 'http://test.lemonban.com//futureloan/mvc/api/member/login', 'data': {'mobilephone': '18501026696', 'pwd': '123456'}, 'sql': {'my_sql': 'select count(*) from member where mobilephone=%s', 'condition': '18501026696', 'result': 1, 'code': 0}, 'exception_code': 10001, 'exception_sql_select': 1},
{'id': 3, 'module': '充值', 'description': '输入手机号,充值金额为空', 'method': 'get', 'url': 'http://test.lemonban.com//futureloan/mvc/api/member/recharge', 'data': {'mobilephone': '', 'amount': ''}, 'sql': {'my_sql': 'select LeaveAmount from member where mobilephone=%s', 'result': 'None', 'condition': '', 'code': 0}, 'exception_code': 20103, 'exception_sql_select': 'None'},
{'id': 4, 'module': '充值', 'description': '输入手机号、充值金额', 'method': 'get', 'url': 'http://test.lemonban.com//futureloan/mvc/api/member/recharge', 'data': {'mobilephone': '18501026696', 'amount': 600.0}, 'sql': {'my_sql': 'select LeaveAmount from member where mobilephone=%s', 'result': 600.0, 'condition': '18501026696', 'code': 0}, 'exception_code': 10001, 'exception_sql_select': '600.00'
}]
@pytest.mark.parametrize('caseinfo',t) # 解包操作,输出多个参数
def test_api_11(self,caseinfo):
print(caseinfo["id"],caseinfo["module"])

if __name__ == '__main__':
pytest.main(["-vs", "test.py"])

结果:

具体应用:

第一种:列表【[],[]】 args解包

test_data_list = t.read_data()
class Test_insterface:
#COOKIES=None # 全局变量
@allure.description('测试接口:采用正向和反向用例测试')
@pytest.mark.parametrize('id,module,description,method,url,data,sql,exception_code,exception_sql_select', test_data_list)
def test_case_ykt(self,id,module,description,method,url,data,sql,exception_code,exception_sql_select):
logging.info("正在运行{}接口:第{}条测试用例".format(module, id))
logging.info("测试数据:{},{},{}".format(method, url, data))
result_dict = {} #创建空字典,用于存在请求返回结果的数据

第二种:字典【{},{}】 args解包

test_data=t.read_excel(mode,case_list)
class Test_interFaceCase:
@pytest.mark.parametrize('caseinfo',test_data)#获取数据test_data的方式是字典格式,不能caseinfo数据拆开
def test_interface(self,caseinfo):
id=caseinfo["id"] #因为数据是字典格式[{}],需要拆开使用
module=caseinfo["module"]
method=caseinfo["method"]
url=caseinfo["url"]
data=caseinfo["data"] logging.info("正在运行{}接口:第{}条测试用例".format(module, id))
logging.info("测试数据:{},{},{}".format(method, url, data))

最新文章

  1. action func用法记记
  2. 关闭 Sublime Text 3 自动更新
  3. java gui 之容器组件
  4. flexgrid的应用
  5. [Forward]Use the SharePoint My Tasks Web Part outside of My Sites
  6. Linux系统编程(4)——文件与IO之ioctl函数
  7. Android manifest
  8. flex与后台及页面间对象的传递
  9. 浩哥解析MyBatis源码(七)——DataSource数据源模块之托管数据源
  10. JavaScript tips ——搞定闰年
  11. 【翻译】使用新的Sencha Cmd 4命令app watch
  12. weka的基本使用
  13. BZOJ.3784.树上的路径(点分治 贪心 堆)
  14. 面面俱到的Java接口自动化测试实战
  15. export,import ,export default是什么
  16. Chart控件使用初步
  17. webpack构建react多页面应用
  18. 前端使用express mock数据
  19. SpaceVim 语言模块 erlang
  20. 夜色的 cocos2d-x 开发笔记 03

热门文章

  1. Git03 自建代码托管平台-GitLab
  2. Dapr v1.10.0 版本已发布
  3. CSS常用属性(2)
  4. SVN服务器的安装与使用
  5. Vue3从基础到精通
  6. DevOps 与 FinOps:二者可以协同吗?
  7. Postgresql动态共享内存类型
  8. switch-声明和类型模式匹配
  9. Deer_GF之UI界面制作
  10. WPF 布局控件