assert断言多个

1.初级版本,pytest断言成功和失败,这边接口都是另外封装的,只需要传indata参数和cookies

 1 @pytest.mark.parametrize("casename,indata,except_result", get_excel_data("合同分类", "contract_types_del"))
 2     def test_delete_contract_types1(self, casename, indata, except_result, before_add_contract_types):
 3         ret = Api_Contract_types().del_contract_types(indata, before_add_contract_types[1])
 4         print("用例编号》》》", casename)
 5         # print(ret)
 6         try:
 7             # 如果返回响应结果有error,执行error判断,没有执行删除成功判断
 8             if ret.get('error') != None:
 9                 assert ret['error']['message'] == except_result['error']['message']
10                 assert ret['error']['error'] == except_result['error']['error']
11 
12             else:
13                 assert ret == except_result
14         except Exception as e:
15             log.error("断言出错,错误信息:{}".format(e))
16             # 输出错误信息
17             print("错误原因:", e)
18             raise

2.进阶版本,我就偷懒了,放另一个接口代码,下面断言Excel中的

失败:message,error,
成功:name,amount,receive_payment_type,amount_type,create_date字段。这个接口跑了几十个用例,暂时没啥问题,欢迎大佬指正不足之处!
备注:name字段这边有个bug,我加这个抛异常是为了区分响应结果和Excel的预期结果没有name导致的nokey name报错,其实可以不写。
 1 #添加合同,固定销售合同分类id,销售部id,签约对象张三id
 2 @pytest.mark.parametrize("casename,indata,except_result",get_excel_data("合同","addcontracts"))
 3 def test_add_contract1(self,casename,indata,except_result,init_add_contract_type,init_add_acounnt):
 4     indata['contract_type']=init_add_contract_type[0]
 5     indata['othercompany']=init_add_acounnt[0]
 6     indata['company_id']=init_add_contract_type[1]
 7     print("用例编号》》》》", casename)
 8     ret=Api_Contract().add_contract(indata,init_add_contract_type[2])
 9     try:
10         # 如果返回响应结果有error,执行error判断,没有则执行成功的判断
11         if ret.get('error') != None:
12             assert ret['error']['message'] == except_result['error']['message']
13             assert ret['error']['error'] == except_result['error']['error']
14         else:
15             #判断响应结果中是否包含name,不包含抛异常找不到name参数
16             if ret.get('value')[0].get('name')!=None:
17                 assert ret['value'][0]['name'] == except_result['name']
18                 #如果响应结果中包含amount_type,就做断言是否和预期结果相等
19                 if ret.get('value')[0].get('amount_type')!=None:
20                     assert ret['value'][0]['amount_type'] == except_result['amount_type']
21                     # 如果响应结果中包含amount,就做断言是否和预期结果相等
22                 elif ret.get('value')[0].get('amount')!=None:
23                     assert ret['value'][0]['amount'] == except_result['amount']
24                     # 如果响应结果中包含receive_payment_type,就做断言是否和预期结果相等
25                 elif ret.get('value')[0].get('receive_payment_type')!=None:
26                     assert ret['value'][0]['receive_payment_type'] == except_result['receive_payment_type']
27                 elif ret.get('value')[0].get('create_date')!=None:
28                     assert ret['value'][0]['create_date'] == except_result['create_date']
29             else:
30                 raise Exception("返回响应body中没有找到name参数")
31 
32             Api_Contract().del_contract({"contracts_id":ret['value'][0]['_id']},init_add_contract_type[2])
33 
34     except Exception as e:
35         log.error("断言出错,错误信息:{}".format(e))
36         # 输出错误信息
37         print("错误原因:", e)
38         raise

 

上一篇:Python 获取异常信息


下一篇:java学习--抽象类与接口