{ "uid" : "f1fce14889f56918", "name" : "正向用例", "fullName" : "test_case.test_demo.test_bpm.TestBPM#test_bpm", "historyId" : "26e1507c7bd8c0107f4f39d50b1b4625", "time" : { "start" : 1725517388363, "stop" : 1725517388387, "duration" : 24 }, "status" : "failed", "statusMessage" : "AssertionError: 断言失败", "statusTrace" : "self = <apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x0000023F24E54790>\nfix_db = <apiAutoTest_v3.common.db.DB object at 0x0000023F24EF2640>\nfix_req = <apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x0000023F24F2EBE0>, module_name = '维度管理', api_name = '更新维度'\nlevel = '中', title = '正向用例', url = 'http://36.139.193.99:8088/api/demension/v1/dem/updateDem', method = 'put', mime = 'json'\ncase_data = {'code': 'requestsAddDem', 'description': 'requestsAddDem', 'isDefault': 0, 'name': 'requestsAddDem'}\nexpect_data = {'message': '更新维度成功'}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-Demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\", excel.get_data())\n def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n # 判断sql语句的类型是否为delete\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句,DB类对象===fix_db自定义固件\n fix_db.delete(sql_data['delete'])\n \n # 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询的sql语句, 并获取查询结果,DB类对象===fix_db自定义固件\n select_result = fix_db.select(sql_data['select'])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者为 delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句,DB类对象===fix_db自定义固件\n fix_db.delete(sql_data['delete'])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并获取查询结果,DB类对象===fix_db自定义固件\n select_result = fix_db.select(sql_data['select'])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 使用RequestMethod类对象发送请求\n res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)\n \n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '更新维度成功' == '更新维度成功!'\nE \nE - 更新维度成功!\nE ? -\nE + 更新维度成功\n\ntest_case\\test_demo\\test_bpm.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x0000023F24E54790>\nfix_db = <apiAutoTest_v3.common.db.DB object at 0x0000023F24EF2640>\nfix_req = <apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x0000023F24F2EBE0>, module_name = '维度管理', api_name = '更新维度'\nlevel = '中', title = '正向用例', url = 'http://36.139.193.99:8088/api/demension/v1/dem/updateDem', method = 'put', mime = 'json'\ncase_data = {'code': 'requestsAddDem', 'description': 'requestsAddDem', 'isDefault': 0, 'name': 'requestsAddDem'}\nexpect_data = {'message': '更新维度成功'}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-Demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\", excel.get_data())\n def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n # 判断sql语句的类型是否为delete\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句,DB类对象===fix_db自定义固件\n fix_db.delete(sql_data['delete'])\n \n # 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询的sql语句, 并获取查询结果,DB类对象===fix_db自定义固件\n select_result = fix_db.select(sql_data['select'])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者为 delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句,DB类对象===fix_db自定义固件\n fix_db.delete(sql_data['delete'])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并获取查询结果,DB类对象===fix_db自定义固件\n select_result = fix_db.select(sql_data['select'])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 使用RequestMethod类对象发送请求\n res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)\n \n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(f\"断言失败,接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_demo\\test_bpm.py:64: AssertionError", "flaky" : false, "newFailed" : false, "beforeStages" : [ ], "testStage" : { "status" : "failed", "statusMessage" : "AssertionError: 断言失败", "statusTrace" : "self = <apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x0000023F24E54790>\nfix_db = <apiAutoTest_v3.common.db.DB object at 0x0000023F24EF2640>\nfix_req = <apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x0000023F24F2EBE0>, module_name = '维度管理', api_name = '更新维度'\nlevel = '中', title = '正向用例', url = 'http://36.139.193.99:8088/api/demension/v1/dem/updateDem', method = 'put', mime = 'json'\ncase_data = {'code': 'requestsAddDem', 'description': 'requestsAddDem', 'isDefault': 0, 'name': 'requestsAddDem'}\nexpect_data = {'message': '更新维度成功'}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-Demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\", excel.get_data())\n def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n # 判断sql语句的类型是否为delete\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句,DB类对象===fix_db自定义固件\n fix_db.delete(sql_data['delete'])\n \n # 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询的sql语句, 并获取查询结果,DB类对象===fix_db自定义固件\n select_result = fix_db.select(sql_data['select'])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者为 delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句,DB类对象===fix_db自定义固件\n fix_db.delete(sql_data['delete'])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并获取查询结果,DB类对象===fix_db自定义固件\n select_result = fix_db.select(sql_data['select'])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 使用RequestMethod类对象发送请求\n res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)\n \n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '更新维度成功' == '更新维度成功!'\nE \nE - 更新维度成功!\nE ? -\nE + 更新维度成功\n\ntest_case\\test_demo\\test_bpm.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x0000023F24E54790>\nfix_db = <apiAutoTest_v3.common.db.DB object at 0x0000023F24EF2640>\nfix_req = <apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x0000023F24F2EBE0>, module_name = '维度管理', api_name = '更新维度'\nlevel = '中', title = '正向用例', url = 'http://36.139.193.99:8088/api/demension/v1/dem/updateDem', method = 'put', mime = 'json'\ncase_data = {'code': 'requestsAddDem', 'description': 'requestsAddDem', 'isDefault': 0, 'name': 'requestsAddDem'}\nexpect_data = {'message': '更新维度成功'}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-Demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\", excel.get_data())\n def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n # 判断sql语句的类型是否为delete\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句,DB类对象===fix_db自定义固件\n fix_db.delete(sql_data['delete'])\n \n # 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询的sql语句, 并获取查询结果,DB类对象===fix_db自定义固件\n select_result = fix_db.select(sql_data['select'])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者为 delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句,DB类对象===fix_db自定义固件\n fix_db.delete(sql_data['delete'])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并获取查询结果,DB类对象===fix_db自定义固件\n select_result = fix_db.select(sql_data['select'])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 使用RequestMethod类对象发送请求\n res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)\n \n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(f\"断言失败,接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_demo\\test_bpm.py:64: AssertionError", "steps" : [ ], "attachments" : [ { "uid" : "72a4c06bcadc8be6", "name" : "log", "source" : "72a4c06bcadc8be6.txt", "type" : "text/plain", "size" : 1160 } ], "parameters" : [ ], "stepsCount" : 0, "hasContent" : true, "shouldDisplayMessage" : true, "attachmentsCount" : 1 }, "afterStages" : [ ], "labels" : [ { "name" : "feature", "value" : "维度管理" }, { "name" : "story", "value" : "更新维度" }, { "name" : "severity", "value" : "中" }, { "name" : "epic", "value" : "BPM项目-Demo" }, { "name" : "parentSuite", "value" : "test_case.test_demo" }, { "name" : "suite", "value" : "test_bpm" }, { "name" : "subSuite", "value" : "TestBPM" }, { "name" : "host", "value" : "LAPTOP-O09782E1" }, { "name" : "thread", "value" : "21668-MainThread" }, { "name" : "framework", "value" : "pytest" }, { "name" : "language", "value" : "cpython3" }, { "name" : "package", "value" : "test_case.test_demo.test_bpm" }, { "name" : "resultFormat", "value" : "allure2" } ], "parameters" : [ { "name" : "api_name", "value" : "'更新维度'" }, { "name" : "case_data", "value" : "{'code': 'requestsAddDem', 'description': 'requestsAddDem', 'isDefault': 0, 'name': 'requestsAddDem'}" }, { "name" : "expect_data", "value" : "{'message': '更新维度成功'}" }, { "name" : "level", "value" : "'中'" }, { "name" : "method", "value" : "'put'" }, { "name" : "mime", "value" : "'json'" }, { "name" : "module_name", "value" : "'维度管理'" }, { "name" : "sql_data", "value" : "None" }, { "name" : "sql_type", "value" : "None" }, { "name" : "title", "value" : "'正向用例'" }, { "name" : "update_key", "value" : "None" }, { "name" : "url", "value" : "'http://36.139.193.99:8088/api/demension/v1/dem/updateDem'" } ], "links" : [ ], "hidden" : true, "retry" : true, "extra" : { "categories" : [ ], "tags" : [ ] }, "source" : "f1fce14889f56918.json", "parameterValues" : [ "'更新维度'", "{'code': 'requestsAddDem', 'description': 'requestsAddDem', 'isDefault': 0, 'name': 'requestsAddDem'}", "{'message': '更新维度成功'}", "'中'", "'put'", "'json'", "'维度管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/demension/v1/dem/updateDem'" ] }