{"name": "反向用例-password过短", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <Test_3.test_case.test_demo.test_bpm.TestBPM object at 0x00000249EA75B170>\nfix_req = <Test_3.request_method.request_method.RequestMethod object at 0x00000249EA7C7AD0>\nfix_db = <Test_3.common.db.DB object at 0x00000249EA038800>\nmodule_name = '认证接口', api_name = '登陆系统', title = '反向用例-password过短'\nlevel = '中', url = 'http://36.139.193.99:8088/auth'\nmethod = 'POST', mime = 'application/json'\ncase_data = {'password': '123456', 'username': 'admin'}\nexpect_data = {'message': '账号或密码错误'}, sql_type = None\nsql_data = None, update_key = None\n\n @allure.epic(\"项目名称\")\n # 设置用例的参数化\n @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())\n def test_bpm(self, fix_req, fix_db, module_name, api_name, title, level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):\n # print(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 # 判断sql语句的类型是否为delete,如果是,先使用DB类对象调用delete方法执行删除的sql语句,删除完成后,再发送请求\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除语句,fix_db自定义固件在用例中就是DB类对象\n fix_db.delete(sql_data[\"delete\"])\n # 判断sql语句的类型是否为select,如果是,先使用DB类对象调用select方法执行查询的sql语句,获取查询结果后,将查询的结果更新到用例数据中,再发送请求\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,fix_db自定义固件在用例中就是DB类对象\n select_result = fix_db.select(sql_data[\"select\"])\n # 更新用例数据中的key\n case_data[update_key] = select_result\n # 判断sql语句的类型是否为delete|select,或者select|delete\n elif sql_type == \"delete|select\" or sql_type == \"select|delete\":\n # 使用DB类对象调用delete方法执行删除语句,fix_db自定义固件在用例中就是DB类对象\n fix_db.delete(sql_data[\"delete\"])\n # 使用DB类对象调用select方法执行查询语句,fix_db自定义固件在用例中就是DB类对象\n select_result = fix_db.select(sql_data[\"select\"])\n # 更新用例数据中的key\n case_data[update_key] = select_result\n # 使用RequestMethod类对象调用request_all方法发送请求,fix_req自定义固件在用例中就是RequestMethod类对象\n res = fix_req.request_all(case_url=url, case_method=method, case_mime=mime, case_data=case_data)\n \n try:\n # 断言\n for key in expect_data.keys():\n # 断言期望数据key对应的值和服务器返回的key对应的值是否相等,相等则断言成功,否则断言失败\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '账号或密码错误' == '解密密码异常,请检查RSA公钥和私钥配置'\nE \nE - 解密密码异常,请检查RSA公钥和私钥配置\nE + 账号或密码错误\n\ntest_case\\test_demo\\test_bpm.py:56: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <Test_3.test_case.test_demo.test_bpm.TestBPM object at 0x00000249EA75B170>\nfix_req = <Test_3.request_method.request_method.RequestMethod object at 0x00000249EA7C7AD0>\nfix_db = <Test_3.common.db.DB object at 0x00000249EA038800>\nmodule_name = '认证接口', api_name = '登陆系统', title = '反向用例-password过短'\nlevel = '中', url = 'http://36.139.193.99:8088/auth'\nmethod = 'POST', mime = 'application/json'\ncase_data = {'password': '123456', 'username': 'admin'}\nexpect_data = {'message': '账号或密码错误'}, sql_type = None\nsql_data = None, update_key = None\n\n @allure.epic(\"项目名称\")\n # 设置用例的参数化\n @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())\n def test_bpm(self, fix_req, fix_db, module_name, api_name, title, level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):\n # print(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 # 判断sql语句的类型是否为delete,如果是,先使用DB类对象调用delete方法执行删除的sql语句,删除完成后,再发送请求\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除语句,fix_db自定义固件在用例中就是DB类对象\n fix_db.delete(sql_data[\"delete\"])\n # 判断sql语句的类型是否为select,如果是,先使用DB类对象调用select方法执行查询的sql语句,获取查询结果后,将查询的结果更新到用例数据中,再发送请求\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,fix_db自定义固件在用例中就是DB类对象\n select_result = fix_db.select(sql_data[\"select\"])\n # 更新用例数据中的key\n case_data[update_key] = select_result\n # 判断sql语句的类型是否为delete|select,或者select|delete\n elif sql_type == \"delete|select\" or sql_type == \"select|delete\":\n # 使用DB类对象调用delete方法执行删除语句,fix_db自定义固件在用例中就是DB类对象\n fix_db.delete(sql_data[\"delete\"])\n # 使用DB类对象调用select方法执行查询语句,fix_db自定义固件在用例中就是DB类对象\n select_result = fix_db.select(sql_data[\"select\"])\n # 更新用例数据中的key\n case_data[update_key] = select_result\n # 使用RequestMethod类对象调用request_all方法发送请求,fix_req自定义固件在用例中就是RequestMethod类对象\n res = fix_req.request_all(case_url=url, case_method=method, case_mime=mime, case_data=case_data)\n \n try:\n # 断言\n for key in expect_data.keys():\n # 断言期望数据key对应的值和服务器返回的key对应的值是否相等,相等则断言成功,否则断言失败\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n # 断言失败后\n log.error(f\"断言失败,用例数据为:{case_data},服务器返回数据为:{res.text},期望数据为:{expect_data}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_demo\\test_bpm.py:60: AssertionError"}, "attachments": [{"name": "log", "source": "f82b2c32-3c14-4d14-a52e-0e4f52c74ebb-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登陆系统'"}, {"name": "title", "value": "'反向用例-password过短'"}, {"name": "level", "value": "'中'"}, {"name": "url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "method", "value": "'POST'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': '123456'}"}, {"name": "expect_data", "value": "{'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1725700331196, "stop": 1725700331206, "uuid": "4e37237e-4c22-404e-b480-edc4c0f9d9ed", "historyId": "7a20a48bec2a40b09526c5f6b70a6337", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登陆系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "项目名称"}, {"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-H5VLFKIL"}, {"name": "thread", "value": "12816-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}