{
  "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'" ]
}