# -*-coding:utf-8 -*- # # --------------------------------------------------------------------------- # ProjectName: test59 # FileName: test_bpm.py # Author: laozhao # Datetime: 2024/3/18 16:49 # Description: # # --------------------------------------------------------------------------- import pytest from InterfaceAutoTest.common.read_excel import ReadExcel from InterfaceAutoTest import log class TestBPM: @pytest.mark.parametrize("url, method, mime, case_data, expect_data, sql_type, sql_data, update_key", ReadExcel(username="李四", table_name="组织管理").get_data()) def test_bpm(self, db_fix, req_fix, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key): # 1.1 判断sql语句类型是否为delete if sql_type == "delete": # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix db_fix.delete(sql_data) # 1.3 使用RequestsMethod类对象request_all方法发生请求 # 2.1 判断sql语句类型是否为select elif sql_type == "select": # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix select_result = db_fix.select(sql_data) # 2.3 将查询结果更新到用例数据中 case_data[update_key] = select_result # 2.3 使用RequestsMethod类对象request_all方法发生请求 # 3.1 判断sql语句的类型是否为select|delete或者为delete|select elif sql_type == "select|delete" or sql_type == "delete|select": # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix db_fix.delete(sql_data["delete"]) # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix select_result = db_fix.select(sql_data["select"]) # 3.4 将查询结果更新到用例数据中 case_data[update_key] = select_result # 3.5 使用RequestsMethod类对象request_all方法发生请求 # 使用RequestsMethod类对象request_all方法发生请求 res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data) # 断言 try: for key in expect_data.keys(): assert expect_data[key] == res.json().get(key) except AssertionError: log.error(f"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}") raise AssertionError("断言失败") else: log.error(f"断言成功,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}")