{
  "uid" : "ced3f801771adde4",
  "name" : "反向用例-username错误",
  "fullName" : "test_case.test_template.test_template.TestTemple#test_method_template",
  "historyId" : "dfd4b38575c49a6fabc1cc90c1baa4fd",
  "time" : {
    "start" : 1704358256562,
    "stop" : 1704358256618,
    "duration" : 56
  },
  "status" : "failed",
  "statusMessage" : "AssertionError: 断言失败",
  "statusTrace" : "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000020F9C4422B0>\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 = '反向用例-username错误', case_level = '中', case_req = 'Post', case_url = 'http://120.46.172.186:8080/auth', case_mime = 'json'\ncase_data = {'password': 'MTIzNDU2', 'username': 'Admin'}, expect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\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 False == None\nE                +  where None = <built-in method get of dict object at 0x0000020F9C5380C0>('state')\nE                +    where <built-in method get of dict object at 0x0000020F9C5380C0> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...QsImlhdCI6MTcwNDM1ODI1NH0.fBpq9i2hdY7cr5F1cy28tCuK1sKyqB5Jju_FrHyoHPB8ImE4hjsYCReC49suTm96rU1R9irqvnP6bMuA8b-hGA', ...}.get\nE                +      where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...QsImlhdCI6MTcwNDM1ODI1NH0.fBpq9i2hdY7cr5F1cy28tCuK1sKyqB5Jju_FrHyoHPB8ImE4hjsYCReC49suTm96rU1R9irqvnP6bMuA8b-hGA', ...} = <bound method Response.json of <Response [200]>>()\nE                +        where <bound method Response.json of <Response [200]>> = <Response [200]>.json\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 0x0000020F9C4422B0>\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 = '反向用例-username错误', case_level = '中', case_req = 'Post', case_url = 'http://120.46.172.186:8080/auth', case_mime = 'json'\ncase_data = {'password': 'MTIzNDU2', 'username': 'Admin'}, expect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\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 0x0000020F9C4422B0>\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 = '反向用例-username错误', case_level = '中', case_req = 'Post', case_url = 'http://120.46.172.186:8080/auth', case_mime = 'json'\ncase_data = {'password': 'MTIzNDU2', 'username': 'Admin'}, expect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\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 False == None\nE                +  where None = <built-in method get of dict object at 0x0000020F9C5380C0>('state')\nE                +    where <built-in method get of dict object at 0x0000020F9C5380C0> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...QsImlhdCI6MTcwNDM1ODI1NH0.fBpq9i2hdY7cr5F1cy28tCuK1sKyqB5Jju_FrHyoHPB8ImE4hjsYCReC49suTm96rU1R9irqvnP6bMuA8b-hGA', ...}.get\nE                +      where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...QsImlhdCI6MTcwNDM1ODI1NH0.fBpq9i2hdY7cr5F1cy28tCuK1sKyqB5Jju_FrHyoHPB8ImE4hjsYCReC49suTm96rU1R9irqvnP6bMuA8b-hGA', ...} = <bound method Response.json of <Response [200]>>()\nE                +        where <bound method Response.json of <Response [200]>> = <Response [200]>.json\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 0x0000020F9C4422B0>\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 = '反向用例-username错误', case_level = '中', case_req = 'Post', case_url = 'http://120.46.172.186:8080/auth', case_mime = 'json'\ncase_data = {'password': 'MTIzNDU2', 'username': 'Admin'}, expect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\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" : "d2874f4338157945",
      "name" : "log",
      "source" : "d2874f4338157945.txt",
      "type" : "text/plain",
      "size" : 2138
    } ],
    "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" : "{'username': 'Admin', 'password': 'MTIzNDU2'}"
  }, {
    "name" : "case_level",
    "value" : "'中'"
  }, {
    "name" : "case_mime",
    "value" : "'json'"
  }, {
    "name" : "case_req",
    "value" : "'Post'"
  }, {
    "name" : "case_title",
    "value" : "'反向用例-username错误'"
  }, {
    "name" : "case_url",
    "value" : "'http://120.46.172.186:8080/auth'"
  }, {
    "name" : "expect_data",
    "value" : "{'state': False, 'message': '账号或密码错误'}"
  }, {
    "name" : "module_name",
    "value" : "'认证接口'"
  }, {
    "name" : "sql_data",
    "value" : "None"
  }, {
    "name" : "sql_type",
    "value" : "None"
  }, {
    "name" : "update_key",
    "value" : "None"
  } ],
  "links" : [ ],
  "hidden" : true,
  "retry" : true,
  "extra" : {
    "categories" : [ ],
    "tags" : [ ]
  },
  "source" : "ced3f801771adde4.json",
  "parameterValues" : [ "'登录系统'", "{'username': 'Admin', 'password': 'MTIzNDU2'}", "'中'", "'json'", "'Post'", "'反向用例-username错误'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}