{ "uid" : "84a86a64b208001d", "name" : "正向用例", "fullName" : "test_case.test_template.test_template.TestTemple#test_method_template", "historyId" : "e943aea026843140d1f743f4ec12e18c", "time" : { "start" : 1704358258508, "stop" : 1704358258691, "duration" : 183 }, "status" : "failed", "statusMessage" : "AssertionError: 断言失败", "statusTrace" : "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000020F9C442820>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000020F9C6876A0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000020F9C6FD8B0>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', case_req = 'POST', case_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742830961365630976', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}\nsql_type = 'select|delete'\nsql_data = {'delete': 'delete from uc_org WHERE `CODE_`=\"test_58_org\";', 'select': 'select ID_ from uc_demension WHERE `CODE_`=\"test58_dem_abc\";'}\nupdate_key = 'demId'\n\n @allure.epic(\"BPM系统-模板\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"module_name, api_name, case_title, case_level, case_req, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(excel_path=excel_path, table_name=table_name, case_data_path=case_data_path, expect_data_path=expect_data_path, sql_data_path=sql_data_path).get_data())\n @log_decorator\n def test_method_template(self, db_fix, req_fix, module_name, api_name, case_title, case_level, case_req, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 调用allure的功能,影响报告的内容\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 使用DB类对象,调用delete方法执行删除的sql语句\n db_fix.delete(sql_data)\n \n # 判断sql语句是否为select\n elif sql_type == \"select\":\n # 使用DB类对象,调用select方法执行查询的sql语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\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语句\n db_fix.delete(sql_data[\"delete\"])\n # 使用DB类对象,调用select方法执行查询的sql语句,并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 发送请求--使用RequestsMethod类对象的request_all方法发送请求\n result = req_fix.request_all(req_method=case_req, req_url=case_url, req_mime=case_mime, case_data=case_data)\n \n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '添加组织成功' == '添加组织成功!'\nE - 添加组织成功!\nE ? -\nE + 添加组织成功\n\ntest_case\\test_template\\test_template.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000020F9C442820>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000020F9C6876A0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000020F9C6FD8B0>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', case_req = 'POST', case_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742830961365630976', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}\nsql_type = 'select|delete'\nsql_data = {'delete': 'delete from uc_org WHERE `CODE_`=\"test_58_org\";', 'select': 'select ID_ from uc_demension WHERE `CODE_`=\"test58_dem_abc\";'}\nupdate_key = 'demId'\n\n @allure.epic(\"BPM系统-模板\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"module_name, api_name, case_title, case_level, case_req, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(excel_path=excel_path, table_name=table_name, case_data_path=case_data_path, expect_data_path=expect_data_path, sql_data_path=sql_data_path).get_data())\n @log_decorator\n def test_method_template(self, db_fix, req_fix, module_name, api_name, case_title, case_level, case_req, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 调用allure的功能,影响报告的内容\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 使用DB类对象,调用delete方法执行删除的sql语句\n db_fix.delete(sql_data)\n \n # 判断sql语句是否为select\n elif sql_type == \"select\":\n # 使用DB类对象,调用select方法执行查询的sql语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\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语句\n db_fix.delete(sql_data[\"delete\"])\n # 使用DB类对象,调用select方法执行查询的sql语句,并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 发送请求--使用RequestsMethod类对象的request_all方法发送请求\n result = req_fix.request_all(req_method=case_req, req_url=case_url, req_mime=case_mime, case_data=case_data)\n \n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == result.json().get(key)\n \n except AssertionError:\n logging.error(\"断言失败:用例为:\"+str(case_data)+\"期望数据为:\"+str(expect_data)+\"服务器返回数据为:\"+result.text)\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_template\\test_template.py:65: AssertionError", "flaky" : false, "newFailed" : false, "beforeStages" : [ { "name" : "req_fix", "time" : { "start" : 1704358255832, "stop" : 1704358255925, "duration" : 93 }, "status" : "passed", "steps" : [ ], "attachments" : [ ], "parameters" : [ ], "attachmentsCount" : 0, "shouldDisplayMessage" : false, "stepsCount" : 0, "hasContent" : false }, { "name" : "_session_faker", "time" : { "start" : 1704358247099, "stop" : 1704358247227, "duration" : 128 }, "status" : "passed", "steps" : [ ], "attachments" : [ ], "parameters" : [ ], "attachmentsCount" : 0, "shouldDisplayMessage" : false, "stepsCount" : 0, "hasContent" : false }, { "name" : "db_fix", "time" : { "start" : 1704358255618, "stop" : 1704358255832, "duration" : 214 }, "status" : "passed", "steps" : [ ], "attachments" : [ ], "parameters" : [ ], "attachmentsCount" : 0, "shouldDisplayMessage" : false, "stepsCount" : 0, "hasContent" : false } ], "testStage" : { "status" : "failed", "statusMessage" : "AssertionError: 断言失败", "statusTrace" : "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000020F9C442820>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000020F9C6876A0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000020F9C6FD8B0>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', case_req = 'POST', case_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742830961365630976', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}\nsql_type = 'select|delete'\nsql_data = {'delete': 'delete from uc_org WHERE `CODE_`=\"test_58_org\";', 'select': 'select ID_ from uc_demension WHERE `CODE_`=\"test58_dem_abc\";'}\nupdate_key = 'demId'\n\n @allure.epic(\"BPM系统-模板\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"module_name, api_name, case_title, case_level, case_req, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(excel_path=excel_path, table_name=table_name, case_data_path=case_data_path, expect_data_path=expect_data_path, sql_data_path=sql_data_path).get_data())\n @log_decorator\n def test_method_template(self, db_fix, req_fix, module_name, api_name, case_title, case_level, case_req, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 调用allure的功能,影响报告的内容\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 使用DB类对象,调用delete方法执行删除的sql语句\n db_fix.delete(sql_data)\n \n # 判断sql语句是否为select\n elif sql_type == \"select\":\n # 使用DB类对象,调用select方法执行查询的sql语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\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语句\n db_fix.delete(sql_data[\"delete\"])\n # 使用DB类对象,调用select方法执行查询的sql语句,并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 发送请求--使用RequestsMethod类对象的request_all方法发送请求\n result = req_fix.request_all(req_method=case_req, req_url=case_url, req_mime=case_mime, case_data=case_data)\n \n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '添加组织成功' == '添加组织成功!'\nE - 添加组织成功!\nE ? -\nE + 添加组织成功\n\ntest_case\\test_template\\test_template.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000020F9C442820>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000020F9C6876A0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000020F9C6FD8B0>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', case_req = 'POST', case_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742830961365630976', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}\nsql_type = 'select|delete'\nsql_data = {'delete': 'delete from uc_org WHERE `CODE_`=\"test_58_org\";', 'select': 'select ID_ from uc_demension WHERE `CODE_`=\"test58_dem_abc\";'}\nupdate_key = 'demId'\n\n @allure.epic(\"BPM系统-模板\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"module_name, api_name, case_title, case_level, case_req, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(excel_path=excel_path, table_name=table_name, case_data_path=case_data_path, expect_data_path=expect_data_path, sql_data_path=sql_data_path).get_data())\n @log_decorator\n def test_method_template(self, db_fix, req_fix, module_name, api_name, case_title, case_level, case_req, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 调用allure的功能,影响报告的内容\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 使用DB类对象,调用delete方法执行删除的sql语句\n db_fix.delete(sql_data)\n \n # 判断sql语句是否为select\n elif sql_type == \"select\":\n # 使用DB类对象,调用select方法执行查询的sql语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\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语句\n db_fix.delete(sql_data[\"delete\"])\n # 使用DB类对象,调用select方法执行查询的sql语句,并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 发送请求--使用RequestsMethod类对象的request_all方法发送请求\n result = req_fix.request_all(req_method=case_req, req_url=case_url, req_mime=case_mime, case_data=case_data)\n \n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == result.json().get(key)\n \n except AssertionError:\n logging.error(\"断言失败:用例为:\"+str(case_data)+\"期望数据为:\"+str(expect_data)+\"服务器返回数据为:\"+result.text)\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_template\\test_template.py:65: AssertionError", "steps" : [ ], "attachments" : [ { "uid" : "1c3c996885132681", "name" : "log", "source" : "1c3c996885132681.txt", "type" : "text/plain", "size" : 2191 } ], "parameters" : [ ], "attachmentsCount" : 1, "shouldDisplayMessage" : true, "stepsCount" : 0, "hasContent" : true }, "afterStages" : [ { "name" : "req_fix::0", "time" : { "start" : 1704358259574, "stop" : 1704358259574, "duration" : 0 }, "status" : "passed", "steps" : [ ], "attachments" : [ ], "parameters" : [ ], "attachmentsCount" : 0, "shouldDisplayMessage" : false, "stepsCount" : 0, "hasContent" : false }, { "name" : "db_fix::0", "time" : { "start" : 1704358259575, "stop" : 1704358259575, "duration" : 0 }, "status" : "passed", "steps" : [ ], "attachments" : [ ], "parameters" : [ ], "attachmentsCount" : 0, "shouldDisplayMessage" : false, "stepsCount" : 0, "hasContent" : false } ], "labels" : [ { "name" : "feature", "value" : "组织管理" }, { "name" : "story", "value" : "添加组织" }, { "name" : "severity", "value" : "高" }, { "name" : "epic", "value" : "BPM系统-模板" }, { "name" : "parentSuite", "value" : "test_case.test_template" }, { "name" : "suite", "value" : "test_template" }, { "name" : "subSuite", "value" : "TestTemple" }, { "name" : "host", "value" : "TimeIsALine" }, { "name" : "thread", "value" : "18832-MainThread" }, { "name" : "framework", "value" : "pytest" }, { "name" : "language", "value" : "cpython3" }, { "name" : "package", "value" : "test_case.test_template.test_template" }, { "name" : "resultFormat", "value" : "allure2" } ], "parameters" : [ { "name" : "api_name", "value" : "'添加组织'" }, { "name" : "case_data", "value" : "{'code': 'test_58_org', 'demId': '1742830961365630976', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}" }, { "name" : "case_level", "value" : "'高'" }, { "name" : "case_mime", "value" : "'application/json'" }, { "name" : "case_req", "value" : "'POST'" }, { "name" : "case_title", "value" : "'正向用例'" }, { "name" : "case_url", "value" : "'http://120.46.172.186:8080/api/org/v1/org/addOrg'" }, { "name" : "expect_data", "value" : "{'message': '添加组织成功'}" }, { "name" : "module_name", "value" : "'组织管理'" }, { "name" : "sql_data", "value" : "{'delete': 'delete from uc_org WHERE `CODE_`=\"test_58_org\";', 'select': 'select ID_ from uc_demension WHERE `CODE_`=\"test58_dem_abc\";'}" }, { "name" : "sql_type", "value" : "'select|delete'" }, { "name" : "update_key", "value" : "'demId'" } ], "links" : [ ], "hidden" : true, "retry" : true, "extra" : { "categories" : [ ], "tags" : [ ] }, "source" : "84a86a64b208001d.json", "parameterValues" : [ "'添加组织'", "{'code': 'test_58_org', 'demId': '1742830961365630976', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'高'", "'application/json'", "'POST'", "'正向用例'", "'http://120.46.172.186:8080/api/org/v1/org/addOrg'", "{'message': '添加组织成功'}", "'组织管理'", "{'delete': 'delete from uc_org WHERE `CODE_`=\"test_58_org\";', 'select': 'select ID_ from uc_demension WHERE `CODE_`=\"test58_dem_abc\";'}", "'select|delete'", "'demId'" ] }