# -*-coding:utf-8-*- # # --------------------------------------------------------------------------- # ProjectName: test62 # FileName: test_bpm.py # Author: why # Datetime: 2024/9/7 下午3:24 # Description: # 命名规范:文件名全小写+下划线,类名大驼峰,方法和变量小写+下划线连接, # 常量大写,变量和常量用名词,方法用动词 # -------------------------------------------------------------------------- import allure import pytest from apiAutoTest_v4 import log from apiAutoTest_v4.common.read_excel_01 import ReadExcel from apiAutoTest_v4.request_method.request_method import RequestMethod from apiAutoTest_v4.test_case.test_brightlord import namespace # 创建ReadExcel对象,便于获取用户的测试数据,所有创建ReadExcel对象时需要传入用户存放数据的目录名称 excel = ReadExcel(namespace) class TestBpm: @allure.epic("BPM项目-brightlord") # @allure.feature("模块名称") # @allure.story("接口名称") # @allure.title("用例标题") # @allure.severity("用例等级") @pytest.mark.parametrize("module_name, api_name, title, level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key", excel.get_data()) def test_bpm(self, fix_db, fix_req, module_name, api_name, title, level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key): allure.dynamic.feature(module_name) allure.dynamic.story(api_name) allure.dynamic.title(title) allure.dynamic.severity(level) # 判断sql语句类型是否为delete if sql_type == "delete": # 使用fix_db调用DB类对象的delete方法执行sql语句 fix_db.delete(sql_data['delete']) # 判断sql语句类型是否为select if sql_type == "select": # 使用fix_db调用DB类对象的select方法执行sql语句 res_select = fix_db.select(sql_data['select']) # 将查询到的结果更新到用例数据中去 case_data[update_key] = res_select # 判断sql语句是否是delete|select 或 select|delete, 是则执行sql语句 if sql_type == "delete|select" or sql_type == "select|delete": # 使用fix_db调用DB类对象的delete方法执行sql语句 fix_db.delete(sql_data['delete']) # 使用fix_db调用DB类对象的select方法执行sql语句 res_select = fix_db.select(sql_data['select']) # 将查询到的结果更新到用例数据中去 case_data[update_key] = res_select # 使用RequestMethod对象调用request_all方法发送请求 res = RequestMethod().request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data) # 断言 try: for key in expect_data.keys(): assert res.json().get(key) == expect_data[key] except AssertionError: log.error(f"断言失败,接口为{url},期望数据为{expect_data},用例数据为{case_data},服务器返回数据为{res.text}") raise AssertionError("断言失败") else: log.info(f"断言成功,接口为{url},期望数据为{expect_data},用例数据为{case_data},服务器返回数据为{res.text}")