{ "uid" : "a87914af7f1df918", "name" : "正向用例", "fullName" : "test_bpm.TestBPM#test_bpm", "historyId" : "f368301ce537f1bbd596e0d19f24f393", "time" : { "start" : 1691399022389, "stop" : 1691399022444, "duration" : 55 }, "status" : "failed", "statusMessage" : "AssertionError: 断言失败", "statusTrace" : "self = <InterfaceAutoTest.test_case.test_bpm.TestBPM object at 0x00000257902D2820>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000257902F0490>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000257903D93D0>, module = '认证接口', interface = '刷新token', title = '正向用例'\nlevel = '中', method = 'get', url = 'http://120.46.172.186:8080/refresh', mime = None, data = None, expect = {'message': '刷新token成功'}\nsql_type = None, sql_sentence = None, update_key = None\n\n @allure.epic(\"BPM系统\")\n @pytest.mark.parametrize(\"module, interface, title, level, method, url, mime, data, expect, sql_type, sql_sentence, update_key\", ReadExcel().get_data())\n def test_bpm(self, req_fix, db_fix, module, interface, title, level, method, url, mime, data, expect, sql_type, sql_sentence, update_key):\n allure.dynamic.feature(module)\n allure.dynamic.story(interface)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n # 1.1:判断sql语句的类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象,调用delete方法执行删除的sql语句\n db_fix.delete(sql_sentence)\n # # 1.3 使用RequestsMethod类对象调用request_all方法发送请求\n # result = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=data)\n \n # 2.1 判断sql语句的类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象,调用select方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select(sql_sentence)\n # 2.3 将查询结果更新到用例数据中\n data[update_key] = select_result\n # # 2.3 使用RequestsMethod类对象调用request_all方法发送请求\n # result = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=data)\n \n # 3.1 判断sql语句的类型是否delete|select或者为select|delete\n elif sql_type == \"delete|select\" or sql_type == \"select|delete\":\n # 3.2 使用DB类对象,调用delete方法执行删除的sql语句\n db_fix.delete(sql_sentence[\"delete\"])\n # 3.3 使用DB类对象,调用select方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select(sql_sentence[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n data[update_key] = select_result\n # # 3.5 使用RequestsMethod类对象调用request_all方法发送请求\n # result = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=data)\n #\n # else:\n # result = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=data)\n \n result = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=data)\n \n # 断言\n try:\n for key in expect:\n> assert expect[key] == result.json().get(key)\nE AssertionError: assert '刷新token成功' == None\nE + where None = <built-in method get of dict object at 0x000002579047D880>('message')\nE + where <built-in method get of dict object at 0x000002579047D880> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE2OTE0ODU0MjEsImlhdCI6MTY5MTM5OTAyMX0.pk_DluVTDrByMdpsd0Q6k83GXAFpZIaFR_DE5EVzVT22EB9Z00TFxeBrL4zXrrgN3j1kroVm6pCtv7CWcF0ECg', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE2OTE0ODU0MjEsImlhdCI6MTY5MTM5OTAyMX0.pk_DluVTDrByMdpsd0Q6k83GXAFpZIaFR_DE5EVzVT22EB9Z00TFxeBrL4zXrrgN3j1kroVm6pCtv7CWcF0ECg', 'userAttrs': {}, ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_bpm.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_bpm.TestBPM object at 0x00000257902D2820>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000257902F0490>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000257903D93D0>, module = '认证接口', interface = '刷新token', title = '正向用例'\nlevel = '中', method = 'get', url = 'http://120.46.172.186:8080/refresh', mime = None, data = None, expect = {'message': '刷新token成功'}\nsql_type = None, sql_sentence = None, update_key = None\n\n @allure.epic(\"BPM系统\")\n @pytest.mark.parametrize(\"module, interface, title, level, method, url, mime, data, expect, sql_type, sql_sentence, update_key\", ReadExcel().get_data())\n def test_bpm(self, req_fix, db_fix, module, interface, title, level, method, url, mime, data, expect, sql_type, sql_sentence, update_key):\n allure.dynamic.feature(module)\n allure.dynamic.story(interface)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n # 1.1:判断sql语句的类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象,调用delete方法执行删除的sql语句\n db_fix.delete(sql_sentence)\n # # 1.3 使用RequestsMethod类对象调用request_all方法发送请求\n # result = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=data)\n \n # 2.1 判断sql语句的类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象,调用select方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select(sql_sentence)\n # 2.3 将查询结果更新到用例数据中\n data[update_key] = select_result\n # # 2.3 使用RequestsMethod类对象调用request_all方法发送请求\n # result = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=data)\n \n # 3.1 判断sql语句的类型是否delete|select或者为select|delete\n elif sql_type == \"delete|select\" or sql_type == \"select|delete\":\n # 3.2 使用DB类对象,调用delete方法执行删除的sql语句\n db_fix.delete(sql_sentence[\"delete\"])\n # 3.3 使用DB类对象,调用select方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select(sql_sentence[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n data[update_key] = select_result\n # # 3.5 使用RequestsMethod类对象调用request_all方法发送请求\n # result = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=data)\n #\n # else:\n # result = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=data)\n \n result = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=data)\n \n # 断言\n try:\n for key in expect:\n assert expect[key] == result.json().get(key)\n except:\n print(\"断言失败\")\n logging.error(\"断言失败, 模块名称为:{},接口名称为:{},用例标题:{},用例为:{},期望结果为:{},服务器返回数据为:{}\".format(module, interface, title, str(data), str(expect), result.text))\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_bpm.py:65: AssertionError", "flaky" : false, "newFailed" : false, "beforeStages" : [ { "name" : "_session_faker", "time" : { "start" : 1691399016370, "stop" : 1691399016483, "duration" : 113 }, "status" : "passed", "steps" : [ ], "attachments" : [ ], "parameters" : [ ], "hasContent" : false, "stepsCount" : 0, "attachmentsCount" : 0, "shouldDisplayMessage" : false }, { "name" : "req_fix", "time" : { "start" : 1691399016483, "stop" : 1691399016584, "duration" : 101 }, "status" : "passed", "steps" : [ ], "attachments" : [ ], "parameters" : [ ], "hasContent" : false, "stepsCount" : 0, "attachmentsCount" : 0, "shouldDisplayMessage" : false }, { "name" : "db_fix", "time" : { "start" : 1691399016584, "stop" : 1691399016789, "duration" : 205 }, "status" : "passed", "steps" : [ ], "attachments" : [ ], "parameters" : [ ], "hasContent" : false, "stepsCount" : 0, "attachmentsCount" : 0, "shouldDisplayMessage" : false } ], "testStage" : { "status" : "failed", "statusMessage" : "AssertionError: 断言失败", "statusTrace" : "self = <InterfaceAutoTest.test_case.test_bpm.TestBPM object at 0x00000257902D2820>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000257902F0490>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000257903D93D0>, module = '认证接口', interface = '刷新token', title = '正向用例'\nlevel = '中', method = 'get', url = 'http://120.46.172.186:8080/refresh', mime = None, data = None, expect = {'message': '刷新token成功'}\nsql_type = None, sql_sentence = None, update_key = None\n\n @allure.epic(\"BPM系统\")\n @pytest.mark.parametrize(\"module, interface, title, level, method, url, mime, data, expect, sql_type, sql_sentence, update_key\", ReadExcel().get_data())\n def test_bpm(self, req_fix, db_fix, module, interface, title, level, method, url, mime, data, expect, sql_type, sql_sentence, update_key):\n allure.dynamic.feature(module)\n allure.dynamic.story(interface)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n # 1.1:判断sql语句的类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象,调用delete方法执行删除的sql语句\n db_fix.delete(sql_sentence)\n # # 1.3 使用RequestsMethod类对象调用request_all方法发送请求\n # result = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=data)\n \n # 2.1 判断sql语句的类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象,调用select方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select(sql_sentence)\n # 2.3 将查询结果更新到用例数据中\n data[update_key] = select_result\n # # 2.3 使用RequestsMethod类对象调用request_all方法发送请求\n # result = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=data)\n \n # 3.1 判断sql语句的类型是否delete|select或者为select|delete\n elif sql_type == \"delete|select\" or sql_type == \"select|delete\":\n # 3.2 使用DB类对象,调用delete方法执行删除的sql语句\n db_fix.delete(sql_sentence[\"delete\"])\n # 3.3 使用DB类对象,调用select方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select(sql_sentence[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n data[update_key] = select_result\n # # 3.5 使用RequestsMethod类对象调用request_all方法发送请求\n # result = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=data)\n #\n # else:\n # result = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=data)\n \n result = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=data)\n \n # 断言\n try:\n for key in expect:\n> assert expect[key] == result.json().get(key)\nE AssertionError: assert '刷新token成功' == None\nE + where None = <built-in method get of dict object at 0x000002579047D880>('message')\nE + where <built-in method get of dict object at 0x000002579047D880> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE2OTE0ODU0MjEsImlhdCI6MTY5MTM5OTAyMX0.pk_DluVTDrByMdpsd0Q6k83GXAFpZIaFR_DE5EVzVT22EB9Z00TFxeBrL4zXrrgN3j1kroVm6pCtv7CWcF0ECg', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE2OTE0ODU0MjEsImlhdCI6MTY5MTM5OTAyMX0.pk_DluVTDrByMdpsd0Q6k83GXAFpZIaFR_DE5EVzVT22EB9Z00TFxeBrL4zXrrgN3j1kroVm6pCtv7CWcF0ECg', 'userAttrs': {}, ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_bpm.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_bpm.TestBPM object at 0x00000257902D2820>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000257902F0490>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000257903D93D0>, module = '认证接口', interface = '刷新token', title = '正向用例'\nlevel = '中', method = 'get', url = 'http://120.46.172.186:8080/refresh', mime = None, data = None, expect = {'message': '刷新token成功'}\nsql_type = None, sql_sentence = None, update_key = None\n\n @allure.epic(\"BPM系统\")\n @pytest.mark.parametrize(\"module, interface, title, level, method, url, mime, data, expect, sql_type, sql_sentence, update_key\", ReadExcel().get_data())\n def test_bpm(self, req_fix, db_fix, module, interface, title, level, method, url, mime, data, expect, sql_type, sql_sentence, update_key):\n allure.dynamic.feature(module)\n allure.dynamic.story(interface)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n # 1.1:判断sql语句的类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象,调用delete方法执行删除的sql语句\n db_fix.delete(sql_sentence)\n # # 1.3 使用RequestsMethod类对象调用request_all方法发送请求\n # result = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=data)\n \n # 2.1 判断sql语句的类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象,调用select方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select(sql_sentence)\n # 2.3 将查询结果更新到用例数据中\n data[update_key] = select_result\n # # 2.3 使用RequestsMethod类对象调用request_all方法发送请求\n # result = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=data)\n \n # 3.1 判断sql语句的类型是否delete|select或者为select|delete\n elif sql_type == \"delete|select\" or sql_type == \"select|delete\":\n # 3.2 使用DB类对象,调用delete方法执行删除的sql语句\n db_fix.delete(sql_sentence[\"delete\"])\n # 3.3 使用DB类对象,调用select方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select(sql_sentence[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n data[update_key] = select_result\n # # 3.5 使用RequestsMethod类对象调用request_all方法发送请求\n # result = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=data)\n #\n # else:\n # result = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=data)\n \n result = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=data)\n \n # 断言\n try:\n for key in expect:\n assert expect[key] == result.json().get(key)\n except:\n print(\"断言失败\")\n logging.error(\"断言失败, 模块名称为:{},接口名称为:{},用例标题:{},用例为:{},期望结果为:{},服务器返回数据为:{}\".format(module, interface, title, str(data), str(expect), result.text))\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_bpm.py:65: AssertionError", "steps" : [ ], "attachments" : [ { "uid" : "553be23f0722e607", "name" : "log", "source" : "553be23f0722e607.txt", "type" : "text/plain", "size" : 3216 }, { "uid" : "724b60d4fdf815f8", "name" : "stdout", "source" : "724b60d4fdf815f8.txt", "type" : "text/plain", "size" : 65 } ], "parameters" : [ ], "hasContent" : true, "stepsCount" : 0, "attachmentsCount" : 2, "shouldDisplayMessage" : true }, "afterStages" : [ { "name" : "req_fix::0", "time" : { "start" : 1691399029988, "stop" : 1691399029988, "duration" : 0 }, "status" : "passed", "steps" : [ ], "attachments" : [ ], "parameters" : [ ], "hasContent" : false, "stepsCount" : 0, "attachmentsCount" : 0, "shouldDisplayMessage" : false }, { "name" : "db_fix::0", "time" : { "start" : 1691399029987, "stop" : 1691399029987, "duration" : 0 }, "status" : "passed", "steps" : [ ], "attachments" : [ ], "parameters" : [ ], "hasContent" : false, "stepsCount" : 0, "attachmentsCount" : 0, "shouldDisplayMessage" : false } ], "labels" : [ { "name" : "feature", "value" : "认证接口" }, { "name" : "story", "value" : "刷新token" }, { "name" : "severity", "value" : "中" }, { "name" : "epic", "value" : "BPM系统" }, { "name" : "suite", "value" : "test_bpm" }, { "name" : "subSuite", "value" : "TestBPM" }, { "name" : "host", "value" : "LAPTOP-31V3JBFR" }, { "name" : "thread", "value" : "6412-MainThread" }, { "name" : "framework", "value" : "pytest" }, { "name" : "language", "value" : "cpython3" }, { "name" : "package", "value" : "test_bpm" }, { "name" : "resultFormat", "value" : "allure2" } ], "parameters" : [ { "name" : "data", "value" : "None" }, { "name" : "expect", "value" : "{'message': '刷新token成功'}" }, { "name" : "interface", "value" : "'刷新token'" }, { "name" : "level", "value" : "'中'" }, { "name" : "method", "value" : "'get'" }, { "name" : "mime", "value" : "None" }, { "name" : "module", "value" : "'认证接口'" }, { "name" : "sql_sentence", "value" : "None" }, { "name" : "sql_type", "value" : "None" }, { "name" : "title", "value" : "'正向用例'" }, { "name" : "update_key", "value" : "None" }, { "name" : "url", "value" : "'http://120.46.172.186:8080/refresh'" } ], "links" : [ ], "hidden" : true, "retry" : true, "extra" : { "categories" : [ ], "tags" : [ ] }, "source" : "a87914af7f1df918.json", "parameterValues" : [ "None", "{'message': '刷新token成功'}", "'刷新token'", "'中'", "'get'", "None", "'认证接口'", "None", "None", "'正向用例'", "None", "'http://120.46.172.186:8080/refresh'" ] }