Commit a8da86ae by xiaojuan

接口自动化框架-v1.0

parent ffe2829d

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

{
"uid" : "78c5744b444f5a95",
"name" : "反向用例-password为特殊字符",
"fullName" : "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template",
"historyId" : "57b541c51bdec3b8592712d0b209474a",
"time" : {
"start" : 1704355356007,
"stop" : 1704355356103,
"duration" : 96
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "8367ff9e38c5ea5f",
"name" : "log",
"source" : "8367ff9e38c5ea5f.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "884b348526d1dc65",
"name" : "stdout",
"source" : "884b348526d1dc65.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM系统-老张"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_zhang"
}, {
"name" : "suite",
"value" : "test_mr_zhang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_zhang.test_mr_zhang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': '♠♣▣▤▥▦▩◘◙◈'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_mime",
"value" : "'json'"
}, {
"name" : "case_req",
"value" : "'POST'"
}, {
"name" : "case_title",
"value" : "'反向用例-password为特殊字符'"
}, {
"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" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "78c5744b444f5a95.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': '♠♣▣▤▥▦▩◘◙◈'}", "'中'", "'json'", "'POST'", "'反向用例-password为特殊字符'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "894e7ac623750b36",
"name" : "反向用例-username过长",
"fullName" : "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template",
"historyId" : "b6a0b764ba9e85158653bc5839cdfcda",
"time" : {
"start" : 1704355355069,
"stop" : 1704355355157,
"duration" : 88
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "9e131fdf5ad2f055",
"name" : "log",
"source" : "9e131fdf5ad2f055.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "e53d89abfb3d8a82",
"name" : "stdout",
"source" : "e53d89abfb3d8a82.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM系统-老张"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_zhang"
}, {
"name" : "suite",
"value" : "test_mr_zhang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_zhang.test_mr_zhang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'adminadminadminadminadminadminadminadminadminadmin', '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" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "894e7ac623750b36.json",
"parameterValues" : [ "'登录系统'", "{'username': 'adminadminadminadminadminadminadminadminadminadmin', 'password': 'MTIzNDU2'}", "'中'", "'json'", "'POST'", "'反向用例-username过长'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "8cf1715620386fe5",
"name" : "正向用例",
"fullName" : "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template",
"historyId" : "a474934a1f39ac773935fa131a391ff4",
"time" : {
"start" : 1704355354412,
"stop" : 1704355354552,
"duration" : 140
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "97e201a1e82c5f7d",
"name" : "log",
"source" : "97e201a1e82c5f7d.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "7b59d50fae43b4d",
"name" : "stdout",
"source" : "7b59d50fae43b4d.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "用户管理"
}, {
"name" : "story",
"value" : "添加用户"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM系统-老王"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_wang"
}, {
"name" : "suite",
"value" : "test_mr_wang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_wang.test_mr_wang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'添加用户'"
}, {
"name" : "case_data",
"value" : "{'id': '', 'account': 'laowang', 'address': '', 'email': '', 'fullname': 'laowang', 'mobile': '', 'password': '123456', 'photo': '', 'sex': '', 'status': 1}"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_mime",
"value" : "'json'"
}, {
"name" : "case_req",
"value" : "'POST'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://120.46.172.186:8080/api/user/v1/user/addUser'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '用户添加成功!'}"
}, {
"name" : "module_name",
"value" : "'用户管理'"
}, {
"name" : "sql_data",
"value" : "'delete from uc_user WHERE `ACCOUNT_`=\"laowang\";'"
}, {
"name" : "sql_type",
"value" : "'delete'"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "8cf1715620386fe5.json",
"parameterValues" : [ "'添加用户'", "{'id': '', 'account': 'laowang', 'address': '', 'email': '', 'fullname': 'laowang', 'mobile': '', 'password': '123456', 'photo': '', 'sex': '', 'status': 1}", "'高'", "'json'", "'POST'", "'正向用例'", "'http://120.46.172.186:8080/api/user/v1/user/addUser'", "{'state': True, 'message': '用户添加成功!'}", "'用户管理'", "'delete from uc_user WHERE `ACCOUNT_`=\"laowang\";'", "'delete'", "None" ]
}
\ No newline at end of file
{
"uid" : "931a4cbf3b51d3d2",
"name" : "反向用例-password过短",
"fullName" : "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template",
"historyId" : "094640862cf1a2dd8fdee8fafdf5156c",
"time" : {
"start" : 1704355352061,
"stop" : 1704355352154,
"duration" : 93
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "b8f4dd65f00ac172",
"name" : "log",
"source" : "b8f4dd65f00ac172.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "e04788efc6fe8f59",
"name" : "stdout",
"source" : "e04788efc6fe8f59.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM系统-老王"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_wang"
}, {
"name" : "suite",
"value" : "test_mr_wang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_wang.test_mr_wang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': 'm'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_mime",
"value" : "'json'"
}, {
"name" : "case_req",
"value" : "'POST'"
}, {
"name" : "case_title",
"value" : "'反向用例-password过短'"
}, {
"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" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "931a4cbf3b51d3d2.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 'm'}", "'中'", "'json'", "'POST'", "'反向用例-password过短'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "9646782da645fe29",
"name" : "反向用例-password过长",
"fullName" : "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template",
"historyId" : "dbc7fb1b1ee58909cb607253c698adcf",
"time" : {
"start" : 1704355355803,
"stop" : 1704355355897,
"duration" : 94
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "287169ad85f165",
"name" : "log",
"source" : "287169ad85f165.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "de19b048423615b9",
"name" : "stdout",
"source" : "de19b048423615b9.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM系统-老张"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_zhang"
}, {
"name" : "suite",
"value" : "test_mr_zhang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_zhang.test_mr_zhang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': 'MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_mime",
"value" : "'json'"
}, {
"name" : "case_req",
"value" : "'POST'"
}, {
"name" : "case_title",
"value" : "'反向用例-password过长'"
}, {
"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" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "9646782da645fe29.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2'}", "'中'", "'json'", "'POST'", "'反向用例-password过长'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "99641fd344ed9b30",
"name" : "正向用例",
"fullName" : "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template",
"historyId" : "9a778d0f90fe71328f22abc2447013f0",
"time" : {
"start" : 1704355354169,
"stop" : 1704355354224,
"duration" : 55
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "77eaf12c1cb6915d",
"name" : "log",
"source" : "77eaf12c1cb6915d.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "31ef26df09eaef4a",
"name" : "stdout",
"source" : "31ef26df09eaef4a.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "保存组织参数"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM系统-老王"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_wang"
}, {
"name" : "suite",
"value" : "test_mr_wang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_wang.test_mr_wang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'保存组织参数'"
}, {
"name" : "case_data",
"value" : "{'query': {'orgCode': 'test_58_org'}, 'json': [{'alias': 'sz', 'value': '999'}]}"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_mime",
"value" : "'query|json'"
}, {
"name" : "case_req",
"value" : "'post'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '保存组织参数成功!'}"
}, {
"name" : "module_name",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "99641fd344ed9b30.json",
"parameterValues" : [ "'保存组织参数'", "{'query': {'orgCode': 'test_58_org'}, 'json': [{'alias': 'sz', 'value': '999'}]}", "'高'", "'query|json'", "'post'", "'正向用例'", "'http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams'", "{'state': True, 'message': '保存组织参数成功!'}", "'组织管理'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "9b721190eb52e5f8",
"name" : "正向用例-username和password正确",
"fullName" : "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template",
"historyId" : "d8867e412abe669d3691d67a6a5d6e14",
"time" : {
"start" : 1704355350985,
"stop" : 1704355351040,
"duration" : 55
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "d31545e4382b8bdf",
"name" : "log",
"source" : "d31545e4382b8bdf.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "79ebf343c5f2f41e",
"name" : "stdout",
"source" : "79ebf343c5f2f41e.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM系统-老王"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_wang"
}, {
"name" : "suite",
"value" : "test_mr_wang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_wang.test_mr_wang"
}, {
"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和password正确'"
}, {
"name" : "case_url",
"value" : "'http://120.46.172.186:8080/auth'"
}, {
"name" : "expect_data",
"value" : "{'username': '超级管理员', 'account': 'admin', 'loginStatus': True}"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "9b721190eb52e5f8.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU2'}", "'高'", "'json'", "'POST'", "'正向用例-username和password正确'", "'http://120.46.172.186:8080/auth'", "{'username': '超级管理员', 'account': 'admin', 'loginStatus': True}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "9b8049015df51703",
"name" : "正向用例",
"fullName" : "test_case.test_dependecy_template.test_dependecy_template.TestDependency#test_add_demo",
"historyId" : "8721a2d64cab6ba6f324c88ca9e788fa",
"time" : {
"start" : 1704355350481,
"stop" : 1704355350568,
"duration" : 87
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_dependecy_template.test_dependecy_template.TestDependency object at 0x00000146473026A0>\n\n @allure.feature(\"维度管理\")\n @allure.story(\"添加维度\")\n @allure.title(\"正向用例\")\n @allure.severity(\"\")\n @pytest.mark.dependency(depends=[\"TestDependency::test_login\"])\n def test_add_demo(self):\n add_dem_url = \"http://120.46.172.186:8080/api/demension/v1/dem/addDem\"\n add_dem_data = {\n \"code\": \"dem_code_test_528\",\n \"description\": \"测试维度528\",\n \"isDefault\": 0,\n \"name\": \"测试维度518\"\n }\n header = {\"Authorization\": \"Bearer \" + data_dict[\"token\"]}\n print(header)\n res = requests.request(method=\"post\", url=add_dem_url, json=add_dem_data, headers=header)\n # 断言\n try:\n> assert \"成功\" in res.text\nE assert '成功' in '{\"state\":false,\"message\":\"添加维度失败,维度编码【dem_code_test_528】在系统中已存在!\",\"value\":\"\"}'\nE + where '{\"state\":false,\"message\":\"添加维度失败,维度编码【dem_code_test_528】在系统中已存在!\",\"value\":\"\"}' = <Response [200]>.text\n\ntest_case\\test_dependecy_template\\test_dependecy_template.py:60: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_dependecy_template.test_dependecy_template.TestDependency object at 0x00000146473026A0>\n\n @allure.feature(\"维度管理\")\n @allure.story(\"添加维度\")\n @allure.title(\"正向用例\")\n @allure.severity(\"\")\n @pytest.mark.dependency(depends=[\"TestDependency::test_login\"])\n def test_add_demo(self):\n add_dem_url = \"http://120.46.172.186:8080/api/demension/v1/dem/addDem\"\n add_dem_data = {\n \"code\": \"dem_code_test_528\",\n \"description\": \"测试维度528\",\n \"isDefault\": 0,\n \"name\": \"测试维度518\"\n }\n header = {\"Authorization\": \"Bearer \" + data_dict[\"token\"]}\n print(header)\n res = requests.request(method=\"post\", url=add_dem_url, json=add_dem_data, headers=header)\n # 断言\n try:\n assert \"成功\" in res.text\n except AssertionError:\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_dependecy_template\\test_dependecy_template.py:62: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_dependecy_template.test_dependecy_template.TestDependency object at 0x00000146473026A0>\n\n @allure.feature(\"维度管理\")\n @allure.story(\"添加维度\")\n @allure.title(\"正向用例\")\n @allure.severity(\"\")\n @pytest.mark.dependency(depends=[\"TestDependency::test_login\"])\n def test_add_demo(self):\n add_dem_url = \"http://120.46.172.186:8080/api/demension/v1/dem/addDem\"\n add_dem_data = {\n \"code\": \"dem_code_test_528\",\n \"description\": \"测试维度528\",\n \"isDefault\": 0,\n \"name\": \"测试维度518\"\n }\n header = {\"Authorization\": \"Bearer \" + data_dict[\"token\"]}\n print(header)\n res = requests.request(method=\"post\", url=add_dem_url, json=add_dem_data, headers=header)\n # 断言\n try:\n> assert \"成功\" in res.text\nE assert '成功' in '{\"state\":false,\"message\":\"添加维度失败,维度编码【dem_code_test_528】在系统中已存在!\",\"value\":\"\"}'\nE + where '{\"state\":false,\"message\":\"添加维度失败,维度编码【dem_code_test_528】在系统中已存在!\",\"value\":\"\"}' = <Response [200]>.text\n\ntest_case\\test_dependecy_template\\test_dependecy_template.py:60: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_dependecy_template.test_dependecy_template.TestDependency object at 0x00000146473026A0>\n\n @allure.feature(\"维度管理\")\n @allure.story(\"添加维度\")\n @allure.title(\"正向用例\")\n @allure.severity(\"\")\n @pytest.mark.dependency(depends=[\"TestDependency::test_login\"])\n def test_add_demo(self):\n add_dem_url = \"http://120.46.172.186:8080/api/demension/v1/dem/addDem\"\n add_dem_data = {\n \"code\": \"dem_code_test_528\",\n \"description\": \"测试维度528\",\n \"isDefault\": 0,\n \"name\": \"测试维度518\"\n }\n header = {\"Authorization\": \"Bearer \" + data_dict[\"token\"]}\n print(header)\n res = requests.request(method=\"post\", url=add_dem_url, json=add_dem_data, headers=header)\n # 断言\n try:\n assert \"成功\" in res.text\n except AssertionError:\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_dependecy_template\\test_dependecy_template.py:62: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "57997663a12bf032",
"name" : "stdout",
"source" : "57997663a12bf032.txt",
"type" : "text/plain",
"size" : 1120
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : true,
"attachmentsCount" : 1
},
"afterStages" : [ ],
"labels" : [ {
"name" : "story",
"value" : "添加维度"
}, {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "epic",
"value" : "BPM系统依赖"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "tag",
"value" : "dependency(depends=['TestDependency::test_login'])"
}, {
"name" : "parentSuite",
"value" : "test_case.test_dependecy_template"
}, {
"name" : "suite",
"value" : "test_dependecy_template"
}, {
"name" : "subSuite",
"value" : "TestDependency"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_dependecy_template.test_dependecy_template"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ ],
"links" : [ ],
"hidden" : true,
"retry" : true,
"extra" : {
"categories" : [ ],
"tags" : [ "dependency(depends=['TestDependency::test_login'])" ]
},
"source" : "9b8049015df51703.json",
"parameterValues" : [ ]
}
\ No newline at end of file
{
"uid" : "9edb92b535bf068e",
"name" : "正向用例",
"fullName" : "test_case.test_template.test_template.TestTemple#test_method_template",
"historyId" : "8ecb6669ef6b8289662aed579ea2616b",
"time" : {
"start" : 1704355360439,
"stop" : 1704355360574,
"duration" : 135
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "db_fix",
"time" : {
"start" : 1704355358346,
"stop" : 1704355358547,
"duration" : 201
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1704355358547,
"stop" : 1704355358644,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "fda239ccd3fe3694",
"name" : "log",
"source" : "fda239ccd3fe3694.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "f99f0d9400aef4fb",
"name" : "stdout",
"source" : "f99f0d9400aef4fb.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1704355362219,
"stop" : 1704355362219,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1704355362218,
"stop" : 1704355362218,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"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" : "3212-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': 'test58_dem_abc', 'description': '测试维度-58', 'isDefault': 0, 'name': '测试维度-58'}"
}, {
"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/demension/v1/dem/addDem'"
}, {
"name" : "expect_data",
"value" : "{'message': '添加维度成功!'}"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "' delete from uc_demension WHERE `CODE_`=\"test58_dem_abc\";'"
}, {
"name" : "sql_type",
"value" : "'delete'"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "9edb92b535bf068e.json",
"parameterValues" : [ "'添加维度'", "{'code': 'test58_dem_abc', 'description': '测试维度-58', 'isDefault': 0, 'name': '测试维度-58'}", "'高'", "'application/json'", "'POST'", "'正向用例'", "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'", "{'message': '添加维度成功!'}", "'维度管理'", "' delete from uc_demension WHERE `CODE_`=\"test58_dem_abc\";'", "'delete'", "None" ]
}
\ No newline at end of file
{
"uid" : "9f248808b7301343",
"name" : "反向用例-username为特殊字符",
"fullName" : "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template",
"historyId" : "3887fd1c3d0366da0f7f9de735b5324c",
"time" : {
"start" : 1704355355166,
"stop" : 1704355355254,
"duration" : 88
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "2d4823a267840d06",
"name" : "log",
"source" : "2d4823a267840d06.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "bbaf814f11171fdf",
"name" : "stdout",
"source" : "bbaf814f11171fdf.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM系统-老张"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_zhang"
}, {
"name" : "suite",
"value" : "test_mr_zhang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_zhang.test_mr_zhang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': '♠♣▣▤▥▦▩◘◙◈', '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" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "9f248808b7301343.json",
"parameterValues" : [ "'登录系统'", "{'username': '♠♣▣▤▥▦▩◘◙◈', 'password': 'MTIzNDU2'}", "'中'", "'json'", "'POST'", "'反向用例-username为特殊字符'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "a59a20fc0ba77b0f",
"name" : "正向用例",
"fullName" : "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template",
"historyId" : "64c6767d962b32558704adace2e10296",
"time" : {
"start" : 1704355354308,
"stop" : 1704355354402,
"duration" : 94
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "ff6fafc4f6f547b9",
"name" : "log",
"source" : "ff6fafc4f6f547b9.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "210822e49b2ee4c",
"name" : "stdout",
"source" : "210822e49b2ee4c.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "根据维度编码删除维度"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM系统-老王"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_wang"
}, {
"name" : "suite",
"value" : "test_mr_wang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_wang.test_mr_wang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'根据维度编码删除维度'"
}, {
"name" : "case_data",
"value" : "{'ids': '需要更新'}"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_mime",
"value" : "'query'"
}, {
"name" : "case_req",
"value" : "'DELETE'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'"
}, {
"name" : "expect_data",
"value" : "{'message': '删除维度成功!'}"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "'select ID_ from uc_demension WHERE `CODE_`=\"test58_dem_abc\";'"
}, {
"name" : "sql_type",
"value" : "'select'"
}, {
"name" : "update_key",
"value" : "'ids'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "a59a20fc0ba77b0f.json",
"parameterValues" : [ "'根据维度编码删除维度'", "{'ids': '需要更新'}", "'高'", "'query'", "'DELETE'", "'正向用例'", "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功!'}", "'维度管理'", "'select ID_ from uc_demension WHERE `CODE_`=\"test58_dem_abc\";'", "'select'", "'ids'" ]
}
\ No newline at end of file
{
"uid" : "a5fa002a13c53f02",
"name" : "正向用例",
"fullName" : "test_case.test_dependecy_template.test_dependecy_template.TestDependency#test_add_demo",
"historyId" : "8721a2d64cab6ba6f324c88ca9e788fa",
"time" : {
"start" : 1704355350385,
"stop" : 1704355350473,
"duration" : 88
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_dependecy_template.test_dependecy_template.TestDependency object at 0x00000146473026A0>\n\n @allure.feature(\"维度管理\")\n @allure.story(\"添加维度\")\n @allure.title(\"正向用例\")\n @allure.severity(\"\")\n @pytest.mark.dependency(depends=[\"TestDependency::test_login\"])\n def test_add_demo(self):\n add_dem_url = \"http://120.46.172.186:8080/api/demension/v1/dem/addDem\"\n add_dem_data = {\n \"code\": \"dem_code_test_528\",\n \"description\": \"测试维度528\",\n \"isDefault\": 0,\n \"name\": \"测试维度518\"\n }\n header = {\"Authorization\": \"Bearer \" + data_dict[\"token\"]}\n print(header)\n res = requests.request(method=\"post\", url=add_dem_url, json=add_dem_data, headers=header)\n # 断言\n try:\n> assert \"成功\" in res.text\nE assert '成功' in '{\"state\":false,\"message\":\"添加维度失败,维度编码【dem_code_test_528】在系统中已存在!\",\"value\":\"\"}'\nE + where '{\"state\":false,\"message\":\"添加维度失败,维度编码【dem_code_test_528】在系统中已存在!\",\"value\":\"\"}' = <Response [200]>.text\n\ntest_case\\test_dependecy_template\\test_dependecy_template.py:60: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_dependecy_template.test_dependecy_template.TestDependency object at 0x00000146473026A0>\n\n @allure.feature(\"维度管理\")\n @allure.story(\"添加维度\")\n @allure.title(\"正向用例\")\n @allure.severity(\"\")\n @pytest.mark.dependency(depends=[\"TestDependency::test_login\"])\n def test_add_demo(self):\n add_dem_url = \"http://120.46.172.186:8080/api/demension/v1/dem/addDem\"\n add_dem_data = {\n \"code\": \"dem_code_test_528\",\n \"description\": \"测试维度528\",\n \"isDefault\": 0,\n \"name\": \"测试维度518\"\n }\n header = {\"Authorization\": \"Bearer \" + data_dict[\"token\"]}\n print(header)\n res = requests.request(method=\"post\", url=add_dem_url, json=add_dem_data, headers=header)\n # 断言\n try:\n assert \"成功\" in res.text\n except AssertionError:\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_dependecy_template\\test_dependecy_template.py:62: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_dependecy_template.test_dependecy_template.TestDependency object at 0x00000146473026A0>\n\n @allure.feature(\"维度管理\")\n @allure.story(\"添加维度\")\n @allure.title(\"正向用例\")\n @allure.severity(\"\")\n @pytest.mark.dependency(depends=[\"TestDependency::test_login\"])\n def test_add_demo(self):\n add_dem_url = \"http://120.46.172.186:8080/api/demension/v1/dem/addDem\"\n add_dem_data = {\n \"code\": \"dem_code_test_528\",\n \"description\": \"测试维度528\",\n \"isDefault\": 0,\n \"name\": \"测试维度518\"\n }\n header = {\"Authorization\": \"Bearer \" + data_dict[\"token\"]}\n print(header)\n res = requests.request(method=\"post\", url=add_dem_url, json=add_dem_data, headers=header)\n # 断言\n try:\n> assert \"成功\" in res.text\nE assert '成功' in '{\"state\":false,\"message\":\"添加维度失败,维度编码【dem_code_test_528】在系统中已存在!\",\"value\":\"\"}'\nE + where '{\"state\":false,\"message\":\"添加维度失败,维度编码【dem_code_test_528】在系统中已存在!\",\"value\":\"\"}' = <Response [200]>.text\n\ntest_case\\test_dependecy_template\\test_dependecy_template.py:60: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_dependecy_template.test_dependecy_template.TestDependency object at 0x00000146473026A0>\n\n @allure.feature(\"维度管理\")\n @allure.story(\"添加维度\")\n @allure.title(\"正向用例\")\n @allure.severity(\"\")\n @pytest.mark.dependency(depends=[\"TestDependency::test_login\"])\n def test_add_demo(self):\n add_dem_url = \"http://120.46.172.186:8080/api/demension/v1/dem/addDem\"\n add_dem_data = {\n \"code\": \"dem_code_test_528\",\n \"description\": \"测试维度528\",\n \"isDefault\": 0,\n \"name\": \"测试维度518\"\n }\n header = {\"Authorization\": \"Bearer \" + data_dict[\"token\"]}\n print(header)\n res = requests.request(method=\"post\", url=add_dem_url, json=add_dem_data, headers=header)\n # 断言\n try:\n assert \"成功\" in res.text\n except AssertionError:\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_dependecy_template\\test_dependecy_template.py:62: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "ed285e5be08b6595",
"name" : "stdout",
"source" : "ed285e5be08b6595.txt",
"type" : "text/plain",
"size" : 896
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : true,
"attachmentsCount" : 1
},
"afterStages" : [ ],
"labels" : [ {
"name" : "story",
"value" : "添加维度"
}, {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "epic",
"value" : "BPM系统依赖"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "tag",
"value" : "dependency(depends=['TestDependency::test_login'])"
}, {
"name" : "parentSuite",
"value" : "test_case.test_dependecy_template"
}, {
"name" : "suite",
"value" : "test_dependecy_template"
}, {
"name" : "subSuite",
"value" : "TestDependency"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_dependecy_template.test_dependecy_template"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ ],
"links" : [ ],
"hidden" : true,
"retry" : true,
"extra" : {
"categories" : [ ],
"tags" : [ "dependency(depends=['TestDependency::test_login'])" ]
},
"source" : "a5fa002a13c53f02.json",
"parameterValues" : [ ]
}
\ No newline at end of file
{
"uid" : "a6583647569e5e2d",
"name" : "正向用例",
"fullName" : "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template",
"historyId" : "acad9b9ca657e1d5368ecf4d3f5c19f9",
"time" : {
"start" : 1704355354102,
"stop" : 1704355354161,
"duration" : 59
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "3f1d951c5ab6ae06",
"name" : "log",
"source" : "3f1d951c5ab6ae06.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "8d5d7210a14424c8",
"name" : "stdout",
"source" : "8d5d7210a14424c8.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "用户加入组织"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM系统-老王"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_wang"
}, {
"name" : "suite",
"value" : "test_mr_wang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_wang.test_mr_wang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'用户加入组织'"
}, {
"name" : "case_data",
"value" : "{'orgCode': 'test_58_org', 'accounts': 'admin,guest'}"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_mime",
"value" : "'params'"
}, {
"name" : "case_req",
"value" : "'POST'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '加入成功'}"
}, {
"name" : "module_name",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "a6583647569e5e2d.json",
"parameterValues" : [ "'用户加入组织'", "{'orgCode': 'test_58_org', 'accounts': 'admin,guest'}", "'高'", "'params'", "'POST'", "'正向用例'", "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'", "{'state': True, 'message': '加入成功'}", "'组织管理'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "aa3466af57b8aaaf",
"name" : "正向用例",
"fullName" : "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template",
"historyId" : "004074446ba9419929ba197d5ba61664",
"time" : {
"start" : 1704355358092,
"stop" : 1704355358184,
"duration" : 92
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "c4f7e704940981de",
"name" : "log",
"source" : "c4f7e704940981de.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "f6239a8718cfe557",
"name" : "stdout",
"source" : "f6239a8718cfe557.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "根据维度编码删除维度"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM系统-老张"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_zhang"
}, {
"name" : "suite",
"value" : "test_mr_zhang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_zhang.test_mr_zhang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'根据维度编码删除维度'"
}, {
"name" : "case_data",
"value" : "{'ids': '需要更新'}"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_mime",
"value" : "'query'"
}, {
"name" : "case_req",
"value" : "'DELETE'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'"
}, {
"name" : "expect_data",
"value" : "{'message': '删除维度成功!'}"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "'select ID_ from uc_demension WHERE `CODE_`=\"test58_dem_abc\";'"
}, {
"name" : "sql_type",
"value" : "'select'"
}, {
"name" : "update_key",
"value" : "'ids'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "aa3466af57b8aaaf.json",
"parameterValues" : [ "'根据维度编码删除维度'", "{'ids': '需要更新'}", "'高'", "'query'", "'DELETE'", "'正向用例'", "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功!'}", "'维度管理'", "'select ID_ from uc_demension WHERE `CODE_`=\"test58_dem_abc\";'", "'select'", "'ids'" ]
}
\ No newline at end of file
{
"uid" : "abc618454b28f98c",
"name" : "正向用例",
"fullName" : "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template",
"historyId" : "64ca2302b38a761ad4495e1a3a7df6ba",
"time" : {
"start" : 1704355354235,
"stop" : 1704355354293,
"duration" : 58
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "1d5cef222618be6b",
"name" : "log",
"source" : "1d5cef222618be6b.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "bacf8268abda4b90",
"name" : "stdout",
"source" : "bacf8268abda4b90.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "删除组织"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM系统-老王"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_wang"
}, {
"name" : "suite",
"value" : "test_mr_wang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_wang.test_mr_wang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'删除组织'"
}, {
"name" : "case_data",
"value" : "'test_58_org'"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_mime",
"value" : "'text/plain'"
}, {
"name" : "case_req",
"value" : "'post'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '删除组织成功!'}"
}, {
"name" : "module_name",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "abc618454b28f98c.json",
"parameterValues" : [ "'删除组织'", "'test_58_org'", "'高'", "'text/plain'", "'post'", "'正向用例'", "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'", "{'state': True, 'message': '删除组织成功!'}", "'组织管理'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "ad441c3426b3d485",
"name" : "正向用例",
"fullName" : "test_case.test_template.test_template.TestTemple#test_method_template",
"historyId" : "609c144ffca008faa731f5a2a1a90e2e",
"time" : {
"start" : 1704355361835,
"stop" : 1704355361888,
"duration" : 53
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "db_fix",
"time" : {
"start" : 1704355358346,
"stop" : 1704355358547,
"duration" : 201
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1704355358547,
"stop" : 1704355358644,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "de617315b03296fd",
"name" : "log",
"source" : "de617315b03296fd.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "516d8bc2b44ec617",
"name" : "stdout",
"source" : "516d8bc2b44ec617.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1704355362219,
"stop" : 1704355362219,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1704355362218,
"stop" : 1704355362218,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"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" : "3212-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" : "{'query': {'orgCode': 'test_58_org'}, 'json': [{'alias': 'sz', 'value': '999'}]}"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_mime",
"value" : "'query|json'"
}, {
"name" : "case_req",
"value" : "'post'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '保存组织参数成功!'}"
}, {
"name" : "module_name",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "ad441c3426b3d485.json",
"parameterValues" : [ "'保存组织参数'", "{'query': {'orgCode': 'test_58_org'}, 'json': [{'alias': 'sz', 'value': '999'}]}", "'高'", "'query|json'", "'post'", "'正向用例'", "'http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams'", "{'state': True, 'message': '保存组织参数成功!'}", "'组织管理'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "bc6d8f7590db7da3",
"name" : "反向用例-password过短",
"fullName" : "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template",
"historyId" : "b6ce04cc30587adda64f0f4fae297021",
"time" : {
"start" : 1704355355906,
"stop" : 1704355355998,
"duration" : 92
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "4a5db40172b3629d",
"name" : "log",
"source" : "4a5db40172b3629d.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "bc9e8271e1a70cc7",
"name" : "stdout",
"source" : "bc9e8271e1a70cc7.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM系统-老张"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_zhang"
}, {
"name" : "suite",
"value" : "test_mr_zhang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_zhang.test_mr_zhang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': 'm'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_mime",
"value" : "'json'"
}, {
"name" : "case_req",
"value" : "'POST'"
}, {
"name" : "case_title",
"value" : "'反向用例-password过短'"
}, {
"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" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "bc6d8f7590db7da3.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 'm'}", "'中'", "'json'", "'POST'", "'反向用例-password过短'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "c7d78f8f23c410d0",
"name" : "正向用例-username和password正确",
"fullName" : "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template",
"historyId" : "d65f14bcd3e93900fed39a2ae596dcaf",
"time" : {
"start" : 1704355354848,
"stop" : 1704355354900,
"duration" : 52
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "b4e8a56edf41c037",
"name" : "log",
"source" : "b4e8a56edf41c037.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "fd33531b3d2a5b0f",
"name" : "stdout",
"source" : "fd33531b3d2a5b0f.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM系统-老张"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_zhang"
}, {
"name" : "suite",
"value" : "test_mr_zhang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_zhang.test_mr_zhang"
}, {
"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和password正确'"
}, {
"name" : "case_url",
"value" : "'http://120.46.172.186:8080/auth'"
}, {
"name" : "expect_data",
"value" : "{'username': '超级管理员', 'account': 'admin', 'loginStatus': True}"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "c7d78f8f23c410d0.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU2'}", "'高'", "'json'", "'POST'", "'正向用例-username和password正确'", "'http://120.46.172.186:8080/auth'", "{'username': '超级管理员', 'account': 'admin', 'loginStatus': True}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "c8088967e0399600",
"name" : "正向用例-username和password正确",
"fullName" : "test_case.test_template.test_template.TestTemple#test_method_template",
"historyId" : "5cf0ca9bfb84009eee04be6339e4cd3d",
"time" : {
"start" : 1704355358645,
"stop" : 1704355358701,
"duration" : 56
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "db_fix",
"time" : {
"start" : 1704355358346,
"stop" : 1704355358547,
"duration" : 201
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1704355358547,
"stop" : 1704355358644,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "2a9175c56748cee1",
"name" : "log",
"source" : "2a9175c56748cee1.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "db6da708423748ba",
"name" : "stdout",
"source" : "db6da708423748ba.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1704355362219,
"stop" : 1704355362219,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1704355362218,
"stop" : 1704355362218,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"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" : "3212-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和password正确'"
}, {
"name" : "case_url",
"value" : "'http://120.46.172.186:8080/auth'"
}, {
"name" : "expect_data",
"value" : "{'username': '超级管理员', 'account': 'admin', 'loginStatus': True}"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "c8088967e0399600.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU2'}", "'高'", "'json'", "'POST'", "'正向用例-username和password正确'", "'http://120.46.172.186:8080/auth'", "{'username': '超级管理员', 'account': 'admin', 'loginStatus': True}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "cc8a48a980c69ec",
"name" : "反向用例-password过短",
"fullName" : "test_case.test_template.test_template.TestTemple#test_method_template",
"historyId" : "e29df96bf0b201087aade5eb4f0d82a7",
"time" : {
"start" : 1704355359759,
"stop" : 1704355359856,
"duration" : 97
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "db_fix",
"time" : {
"start" : 1704355358346,
"stop" : 1704355358547,
"duration" : 201
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1704355358547,
"stop" : 1704355358644,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "97438c4771e0a590",
"name" : "log",
"source" : "97438c4771e0a590.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "689985a7447b84e3",
"name" : "stdout",
"source" : "689985a7447b84e3.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1704355362219,
"stop" : 1704355362219,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1704355362218,
"stop" : 1704355362218,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"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" : "3212-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': 'm'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_mime",
"value" : "'json'"
}, {
"name" : "case_req",
"value" : "'POST'"
}, {
"name" : "case_title",
"value" : "'反向用例-password过短'"
}, {
"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" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "cc8a48a980c69ec.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 'm'}", "'中'", "'json'", "'POST'", "'反向用例-password过短'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "d1d4a2a8205e4c9b",
"name" : "正向用例",
"fullName" : "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template",
"historyId" : "5cf09777cb8bfb0870c7462f3680ad17",
"time" : {
"start" : 1704355358016,
"stop" : 1704355358081,
"duration" : 65
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "525f0f10717efa1d",
"name" : "log",
"source" : "525f0f10717efa1d.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "b8cd13404c313579",
"name" : "stdout",
"source" : "b8cd13404c313579.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "删除组织"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM系统-老张"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_zhang"
}, {
"name" : "suite",
"value" : "test_mr_zhang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_zhang.test_mr_zhang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'删除组织'"
}, {
"name" : "case_data",
"value" : "'test_58_org'"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_mime",
"value" : "'text/plain'"
}, {
"name" : "case_req",
"value" : "'post'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '删除组织成功!'}"
}, {
"name" : "module_name",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "d1d4a2a8205e4c9b.json",
"parameterValues" : [ "'删除组织'", "'test_58_org'", "'高'", "'text/plain'", "'post'", "'正向用例'", "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'", "{'state': True, 'message': '删除组织成功!'}", "'组织管理'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "d5f1af34c65999bf",
"name" : "反向用例-username错误",
"fullName" : "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template",
"historyId" : "33c30115cd8531c11c15042badbdacb8",
"time" : {
"start" : 1704355351528,
"stop" : 1704355351584,
"duration" : 56
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x00000146482F4D80>('state')\nE + where <built-in method get of dict object at 0x00000146482F4D80> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...ksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...ksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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_mr_wang\\test_mr_wang.py:65: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x00000146482F4D80>('state')\nE + where <built-in method get of dict object at 0x00000146482F4D80> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...ksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...ksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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_mr_wang\\test_mr_wang.py:65: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "373b22ceedc23da3",
"name" : "log",
"source" : "373b22ceedc23da3.txt",
"type" : "text/plain",
"size" : 1423
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : true,
"attachmentsCount" : 1
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM系统-老王"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_wang"
}, {
"name" : "suite",
"value" : "test_mr_wang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_wang.test_mr_wang"
}, {
"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" : "d5f1af34c65999bf.json",
"parameterValues" : [ "'登录系统'", "{'username': 'Admin', 'password': 'MTIzNDU2'}", "'中'", "'json'", "'Post'", "'反向用例-username错误'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "d85f1d4520a8ecf7",
"name" : "反向用例-username为空",
"fullName" : "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template",
"historyId" : "7461be189578c787cfeec4b94a13cc4c",
"time" : {
"start" : 1704355351052,
"stop" : 1704355351104,
"duration" : 52
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "9d78c2e1dc81151e",
"name" : "log",
"source" : "9d78c2e1dc81151e.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "276e33bade2fee05",
"name" : "stdout",
"source" : "276e33bade2fee05.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM系统-老王"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_wang"
}, {
"name" : "suite",
"value" : "test_mr_wang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_wang.test_mr_wang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': '', '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" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "d85f1d4520a8ecf7.json",
"parameterValues" : [ "'登录系统'", "{'username': '', 'password': 'MTIzNDU2'}", "'中'", "'json'", "'POST'", "'反向用例-username为空'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "d99f9f23e9ff60f9",
"name" : "正向用例",
"fullName" : "test_case.test_dependecy_template.test_dependecy_template.TestDependency#test_login",
"historyId" : "a8e1d6b9521f1a7fd6055daae44e0481",
"time" : {
"start" : 1704355349812,
"stop" : 1704355349909,
"duration" : 97
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"afterStages" : [ ],
"labels" : [ {
"name" : "severity",
"value" : "高"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "epic",
"value" : "BPM系统依赖"
}, {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "tag",
"value" : "dependency"
}, {
"name" : "parentSuite",
"value" : "test_case.test_dependecy_template"
}, {
"name" : "suite",
"value" : "test_dependecy_template"
}, {
"name" : "subSuite",
"value" : "TestDependency"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_dependecy_template.test_dependecy_template"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ "dependency" ]
},
"source" : "d99f9f23e9ff60f9.json",
"parameterValues" : [ ]
}
\ No newline at end of file
{
"uid" : "dc3a43ac4ab9a396",
"name" : "反向用例-username错误",
"fullName" : "test_case.test_template.test_template.TestTemple#test_method_template",
"historyId" : "dfd4b38575c49a6fabc1cc90c1baa4fd",
"time" : {
"start" : 1704355359198,
"stop" : 1704355359252,
"duration" : 54
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210400>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x00000146484CC340>('state')\nE + where <built-in method get of dict object at 0x00000146484CC340> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg', ...} = <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 0x0000014648210400>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "db_fix",
"time" : {
"start" : 1704355358346,
"stop" : 1704355358547,
"duration" : 201
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1704355358547,
"stop" : 1704355358644,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210400>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x00000146484CC340>('state')\nE + where <built-in method get of dict object at 0x00000146484CC340> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg', ...} = <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 0x0000014648210400>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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" : "c4d591d053e189a3",
"name" : "log",
"source" : "c4d591d053e189a3.txt",
"type" : "text/plain",
"size" : 1425
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : true,
"attachmentsCount" : 1
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1704355362219,
"stop" : 1704355362219,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1704355362218,
"stop" : 1704355362218,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"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" : "3212-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" : "dc3a43ac4ab9a396.json",
"parameterValues" : [ "'登录系统'", "{'username': 'Admin', 'password': 'MTIzNDU2'}", "'中'", "'json'", "'Post'", "'反向用例-username错误'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "de518c73ecae036",
"name" : "正向用例",
"fullName" : "test_case.test_template.test_template.TestTemple#test_method_template",
"historyId" : "8a137f95ba4a68bf446ff9343a1271df",
"time" : {
"start" : 1704355360369,
"stop" : 1704355360421,
"duration" : 52
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x00000146482446C0>('message')\nE + where <built-in method get of dict object at 0x00000146482446C0> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...} = <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 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "db_fix",
"time" : {
"start" : 1704355358346,
"stop" : 1704355358547,
"duration" : 201
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1704355358547,
"stop" : 1704355358644,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x00000146482446C0>('message')\nE + where <built-in method get of dict object at 0x00000146482446C0> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...} = <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 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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" : "ddce0acc0fee96db",
"name" : "log",
"source" : "ddce0acc0fee96db.txt",
"type" : "text/plain",
"size" : 3551
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : true,
"attachmentsCount" : 1
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1704355362219,
"stop" : 1704355362219,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1704355362218,
"stop" : 1704355362218,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "刷新token"
}, {
"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" : "3212-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" : "'刷新token'"
}, {
"name" : "case_data",
"value" : "None"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_mime",
"value" : "None"
}, {
"name" : "case_req",
"value" : "'GET'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://120.46.172.186:8080/refresh'"
}, {
"name" : "expect_data",
"value" : "{'message': '刷新成功'}"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ {
"uid" : "f5d129465aa44425",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1704355360300,
"stop" : 1704355360351,
"duration" : 51
}
}, {
"uid" : "521cdcb9c509c52e",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1704355360223,
"stop" : 1704355360282,
"duration" : 59
}
}, {
"uid" : "ab69fcbbb6f1b2f1",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1704355360151,
"stop" : 1704355360206,
"duration" : 55
}
}, {
"uid" : "cc820ab33f7101b",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1704355360079,
"stop" : 1704355360130,
"duration" : 51
}
}, {
"uid" : "f17da135bb6dca0c",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1704355359970,
"stop" : 1704355360064,
"duration" : 94
}
} ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "de518c73ecae036.json",
"parameterValues" : [ "'刷新token'", "None", "'高'", "None", "'GET'", "'正向用例'", "'http://120.46.172.186:8080/refresh'", "{'message': '刷新成功'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "e03c2c496df0054",
"name" : "正向用例",
"fullName" : "test_case.test_template.test_template.TestTemple#test_method_template",
"historyId" : "ece10c98bbcc6add49fa944897380ee5",
"time" : {
"start" : 1704355361371,
"stop" : 1704355361549,
"duration" : 178
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x00000146482105E0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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 0x00000146482105E0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "db_fix",
"time" : {
"start" : 1704355358346,
"stop" : 1704355358547,
"duration" : 201
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1704355358547,
"stop" : 1704355358644,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x00000146482105E0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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 0x00000146482105E0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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" : "6342c04f13fa7c04",
"name" : "log",
"source" : "6342c04f13fa7c04.txt",
"type" : "text/plain",
"size" : 2739
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : true,
"attachmentsCount" : 1
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1704355362219,
"stop" : 1704355362219,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1704355362218,
"stop" : 1704355362218,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"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" : "3212-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': '1742818809330286592', '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" : "e03c2c496df0054.json",
"parameterValues" : [ "'添加组织'", "{'code': 'test_58_org', 'demId': '1742818809330286592', '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'" ]
}
\ No newline at end of file
{
"uid" : "e1b9eac85ad98e31",
"name" : "反向用例-password过长",
"fullName" : "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template",
"historyId" : "eae10236a39cd7489d16c9308fc1e207",
"time" : {
"start" : 1704355351956,
"stop" : 1704355352052,
"duration" : 96
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "41336894444586c",
"name" : "log",
"source" : "41336894444586c.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "b956727fd5462a03",
"name" : "stdout",
"source" : "b956727fd5462a03.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM系统-老王"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_wang"
}, {
"name" : "suite",
"value" : "test_mr_wang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_wang.test_mr_wang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': 'MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_mime",
"value" : "'json'"
}, {
"name" : "case_req",
"value" : "'POST'"
}, {
"name" : "case_title",
"value" : "'反向用例-password过长'"
}, {
"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" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "e1b9eac85ad98e31.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2'}", "'中'", "'json'", "'POST'", "'反向用例-password过长'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "e2738a34fb1062f8",
"name" : "反向用例-username为特殊字符",
"fullName" : "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template",
"historyId" : "5d98543074058e754e3e6c9788aaa828",
"time" : {
"start" : 1704355351315,
"stop" : 1704355351401,
"duration" : 86
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "94b93991dec76e61",
"name" : "log",
"source" : "94b93991dec76e61.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "1e3d571bc46def3e",
"name" : "stdout",
"source" : "1e3d571bc46def3e.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM系统-老王"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_wang"
}, {
"name" : "suite",
"value" : "test_mr_wang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_wang.test_mr_wang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': '♠♣▣▤▥▦▩◘◙◈', '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" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "e2738a34fb1062f8.json",
"parameterValues" : [ "'登录系统'", "{'username': '♠♣▣▤▥▦▩◘◙◈', 'password': 'MTIzNDU2'}", "'中'", "'json'", "'POST'", "'反向用例-username为特殊字符'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "e67b49c2340cf8a8",
"name" : "正向用例",
"fullName" : "test_case.test_template.test_template.TestTemple#test_method_template",
"historyId" : "b673aae92214b6cf57ebd3f2bcc747fc",
"time" : {
"start" : 1704355362068,
"stop" : 1704355362210,
"duration" : 142
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "db_fix",
"time" : {
"start" : 1704355358346,
"stop" : 1704355358547,
"duration" : 201
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1704355358547,
"stop" : 1704355358644,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "f551dd6663c7b465",
"name" : "log",
"source" : "f551dd6663c7b465.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "1137c01f3e8e7584",
"name" : "stdout",
"source" : "1137c01f3e8e7584.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1704355362219,
"stop" : 1704355362219,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1704355362218,
"stop" : 1704355362218,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"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" : "3212-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" : "{'id': '', 'account': 'laowang', 'address': '', 'email': '', 'fullname': 'laowang', 'mobile': '', 'password': '123456', 'photo': '', 'sex': '', 'status': 1}"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_mime",
"value" : "'json'"
}, {
"name" : "case_req",
"value" : "'POST'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://120.46.172.186:8080/api/user/v1/user/addUser'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '用户添加成功!'}"
}, {
"name" : "module_name",
"value" : "'用户管理'"
}, {
"name" : "sql_data",
"value" : "'delete from uc_user WHERE `ACCOUNT_`=\"laowang\";'"
}, {
"name" : "sql_type",
"value" : "'delete'"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "e67b49c2340cf8a8.json",
"parameterValues" : [ "'添加用户'", "{'id': '', 'account': 'laowang', 'address': '', 'email': '', 'fullname': 'laowang', 'mobile': '', 'password': '123456', 'photo': '', 'sex': '', 'status': 1}", "'高'", "'json'", "'POST'", "'正向用例'", "'http://120.46.172.186:8080/api/user/v1/user/addUser'", "{'state': True, 'message': '用户添加成功!'}", "'用户管理'", "'delete from uc_user WHERE `ACCOUNT_`=\"laowang\";'", "'delete'", "None" ]
}
\ No newline at end of file
{
"uid" : "e95f11529f09f134",
"name" : "反向用例-username错误",
"fullName" : "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template",
"historyId" : "33c30115cd8531c11c15042badbdacb8",
"time" : {
"start" : 1704355351675,
"stop" : 1704355351730,
"duration" : 55
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x000001464831A0C0>('state')\nE + where <built-in method get of dict object at 0x000001464831A0C0> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...ksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...ksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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_mr_wang\\test_mr_wang.py:65: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x000001464831A0C0>('state')\nE + where <built-in method get of dict object at 0x000001464831A0C0> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...ksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...ksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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_mr_wang\\test_mr_wang.py:65: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "3c9698e6dd696279",
"name" : "log",
"source" : "3c9698e6dd696279.txt",
"type" : "text/plain",
"size" : 2847
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : true,
"attachmentsCount" : 1
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM系统-老王"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_wang"
}, {
"name" : "suite",
"value" : "test_mr_wang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_wang.test_mr_wang"
}, {
"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" : "e95f11529f09f134.json",
"parameterValues" : [ "'登录系统'", "{'username': 'Admin', 'password': 'MTIzNDU2'}", "'中'", "'json'", "'Post'", "'反向用例-username错误'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "ec011e50ead7b5bd",
"name" : "反向用例-username错误",
"fullName" : "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template",
"historyId" : "33c30115cd8531c11c15042badbdacb8",
"time" : {
"start" : 1704355351413,
"stop" : 1704355351509,
"duration" : 96
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x000001464837C8C0>('state')\nE + where <built-in method get of dict object at 0x000001464837C8C0> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...ksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...ksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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_mr_wang\\test_mr_wang.py:65: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x000001464837C8C0>('state')\nE + where <built-in method get of dict object at 0x000001464837C8C0> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...ksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...ksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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_mr_wang\\test_mr_wang.py:65: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "4ad637fb0557754",
"name" : "log",
"source" : "4ad637fb0557754.txt",
"type" : "text/plain",
"size" : 711
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : true,
"attachmentsCount" : 1
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM系统-老王"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_wang"
}, {
"name" : "suite",
"value" : "test_mr_wang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_wang.test_mr_wang"
}, {
"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" : "ec011e50ead7b5bd.json",
"parameterValues" : [ "'登录系统'", "{'username': 'Admin', 'password': 'MTIzNDU2'}", "'中'", "'json'", "'Post'", "'反向用例-username错误'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "ec4096a0ca542aa5",
"name" : "正向用例",
"fullName" : "test_case.test_dependecy_template.test_dependecy_template.TestDependency#test3",
"historyId" : "455987a44c5b38bba06bf0a34630bf2f",
"time" : {
"start" : 1704355350674,
"stop" : 1704355350674,
"duration" : 0
},
"status" : "skipped",
"statusMessage" : "Skipped: test3[4-5-6] depends on TestDependency::test_add_demo",
"statusTrace" : "('D:\\\\Document\\\\PythonDoc\\\\test_58\\\\venv\\\\lib\\\\site-packages\\\\pytest_dependency.py', 101, 'Skipped: test3[4-5-6] depends on TestDependency::test_add_demo')",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "skipped",
"statusMessage" : "Skipped: test3[4-5-6] depends on TestDependency::test_add_demo",
"statusTrace" : "('D:\\\\Document\\\\PythonDoc\\\\test_58\\\\venv\\\\lib\\\\site-packages\\\\pytest_dependency.py', 101, 'Skipped: test3[4-5-6] depends on TestDependency::test_add_demo')",
"steps" : [ ],
"attachments" : [ {
"uid" : "bdc4eda9da6f094a",
"name" : "log",
"source" : "bdc4eda9da6f094a.txt",
"type" : "text/plain",
"size" : 130
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : true,
"attachmentsCount" : 1
},
"afterStages" : [ ],
"labels" : [ {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM系统依赖"
}, {
"name" : "story",
"value" : "测试参数化"
}, {
"name" : "feature",
"value" : "测试模块"
}, {
"name" : "tag",
"value" : "dependency(depends=['TestDependency::test_login', 'TestDependency::test_add_demo'])"
}, {
"name" : "parentSuite",
"value" : "test_case.test_dependecy_template"
}, {
"name" : "suite",
"value" : "test_dependecy_template"
}, {
"name" : "subSuite",
"value" : "TestDependency"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_dependecy_template.test_dependecy_template"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "a",
"value" : "4"
}, {
"name" : "b",
"value" : "5"
}, {
"name" : "c",
"value" : "6"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ "dependency(depends=['TestDependency::test_login', 'TestDependency::test_add_demo'])" ]
},
"source" : "ec4096a0ca542aa5.json",
"parameterValues" : [ "4", "5", "6" ]
}
\ No newline at end of file
{
"uid" : "ef6dd9959366fcc3",
"name" : "反向用例-username错误",
"fullName" : "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template",
"historyId" : "33c30115cd8531c11c15042badbdacb8",
"time" : {
"start" : 1704355351746,
"stop" : 1704355351803,
"duration" : 57
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x00000146483D0AC0>('state')\nE + where <built-in method get of dict object at 0x00000146483D0AC0> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...AsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...AsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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_mr_wang\\test_mr_wang.py:65: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x00000146483D0AC0>('state')\nE + where <built-in method get of dict object at 0x00000146483D0AC0> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...AsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...AsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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_mr_wang\\test_mr_wang.py:65: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "48ccc51c6082d2a8",
"name" : "log",
"source" : "48ccc51c6082d2a8.txt",
"type" : "text/plain",
"size" : 3559
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : true,
"attachmentsCount" : 1
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM系统-老王"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_wang"
}, {
"name" : "suite",
"value" : "test_mr_wang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_wang.test_mr_wang"
}, {
"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" : "ef6dd9959366fcc3.json",
"parameterValues" : [ "'登录系统'", "{'username': 'Admin', 'password': 'MTIzNDU2'}", "'中'", "'json'", "'Post'", "'反向用例-username错误'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "efd9d4bbfcb5bc27",
"name" : "反向用例-username过短",
"fullName" : "test_case.test_template.test_template.TestTemple#test_method_template",
"historyId" : "524fee58c602e51bb671e53cde950aa7",
"time" : {
"start" : 1704355358770,
"stop" : 1704355358861,
"duration" : 91
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "db_fix",
"time" : {
"start" : 1704355358346,
"stop" : 1704355358547,
"duration" : 201
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1704355358547,
"stop" : 1704355358644,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "53f8db47df0e09c0",
"name" : "log",
"source" : "53f8db47df0e09c0.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "26dd3e8176fc8b8c",
"name" : "stdout",
"source" : "26dd3e8176fc8b8c.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1704355362219,
"stop" : 1704355362219,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1704355362218,
"stop" : 1704355362218,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"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" : "3212-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': 'a', '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" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "efd9d4bbfcb5bc27.json",
"parameterValues" : [ "'登录系统'", "{'username': 'a', 'password': 'MTIzNDU2'}", "'中'", "'json'", "'POST'", "'反向用例-username过短'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "f034cb0300caa608",
"name" : "反向用例-username过长",
"fullName" : "test_case.test_template.test_template.TestTemple#test_method_template",
"historyId" : "a3232bdbd26fa2dd9641a5ad5c4e77ca",
"time" : {
"start" : 1704355358870,
"stop" : 1704355358964,
"duration" : 94
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "db_fix",
"time" : {
"start" : 1704355358346,
"stop" : 1704355358547,
"duration" : 201
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1704355358547,
"stop" : 1704355358644,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "62daea4feff396de",
"name" : "log",
"source" : "62daea4feff396de.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "fdd59a6f53dee3ab",
"name" : "stdout",
"source" : "fdd59a6f53dee3ab.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1704355362219,
"stop" : 1704355362219,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1704355362218,
"stop" : 1704355362218,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"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" : "3212-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': 'adminadminadminadminadminadminadminadminadminadmin', '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" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "f034cb0300caa608.json",
"parameterValues" : [ "'登录系统'", "{'username': 'adminadminadminadminadminadminadminadminadminadmin', 'password': 'MTIzNDU2'}", "'中'", "'json'", "'POST'", "'反向用例-username过长'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "f17da135bb6dca0c",
"name" : "正向用例",
"fullName" : "test_case.test_template.test_template.TestTemple#test_method_template",
"historyId" : "8a137f95ba4a68bf446ff9343a1271df",
"time" : {
"start" : 1704355359970,
"stop" : 1704355360064,
"duration" : 94
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x0000014648220940>('message')\nE + where <built-in method get of dict object at 0x0000014648220940> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...} = <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 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "db_fix",
"time" : {
"start" : 1704355358346,
"stop" : 1704355358547,
"duration" : 201
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1704355358547,
"stop" : 1704355358644,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x0000014648220940>('message')\nE + where <built-in method get of dict object at 0x0000014648220940> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...} = <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 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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" : "3192734eb02036b5",
"name" : "log",
"source" : "3192734eb02036b5.txt",
"type" : "text/plain",
"size" : 591
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : true,
"attachmentsCount" : 1
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1704355362219,
"stop" : 1704355362219,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1704355362218,
"stop" : 1704355362218,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "刷新token"
}, {
"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" : "3212-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" : "'刷新token'"
}, {
"name" : "case_data",
"value" : "None"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_mime",
"value" : "None"
}, {
"name" : "case_req",
"value" : "'GET'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://120.46.172.186:8080/refresh'"
}, {
"name" : "expect_data",
"value" : "{'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" : "f17da135bb6dca0c.json",
"parameterValues" : [ "'刷新token'", "None", "'高'", "None", "'GET'", "'正向用例'", "'http://120.46.172.186:8080/refresh'", "{'message': '刷新成功'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "f23bc22a67709133",
"name" : "反向用例-password过长",
"fullName" : "test_case.test_template.test_template.TestTemple#test_method_template",
"historyId" : "668a8e3f30e3e40742ca0446d2e2579a",
"time" : {
"start" : 1704355359655,
"stop" : 1704355359749,
"duration" : 94
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "db_fix",
"time" : {
"start" : 1704355358346,
"stop" : 1704355358547,
"duration" : 201
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1704355358547,
"stop" : 1704355358644,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "7ce63bc9b7f2458d",
"name" : "log",
"source" : "7ce63bc9b7f2458d.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "892759fc9289cd64",
"name" : "stdout",
"source" : "892759fc9289cd64.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1704355362219,
"stop" : 1704355362219,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1704355362218,
"stop" : 1704355362218,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"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" : "3212-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': 'MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_mime",
"value" : "'json'"
}, {
"name" : "case_req",
"value" : "'POST'"
}, {
"name" : "case_title",
"value" : "'反向用例-password过长'"
}, {
"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" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "f23bc22a67709133.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2'}", "'中'", "'json'", "'POST'", "'反向用例-password过长'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "f57865b48c63040c",
"name" : "正向用例",
"fullName" : "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template",
"historyId" : "e6893b1d9c9092641cd9ee0f38b3c02e",
"time" : {
"start" : 1704355352394,
"stop" : 1704355352447,
"duration" : 53
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F20A0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x0000014648396400>('message')\nE + where <built-in method get of dict object at 0x0000014648396400> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw', 'userAttrs': {}, ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F20A0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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_mr_wang\\test_mr_wang.py:65: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F20A0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x0000014648396400>('message')\nE + where <built-in method get of dict object at 0x0000014648396400> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw', 'userAttrs': {}, ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F20A0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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_mr_wang\\test_mr_wang.py:65: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "7e524ed7660aad4d",
"name" : "log",
"source" : "7e524ed7660aad4d.txt",
"type" : "text/plain",
"size" : 1181
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : true,
"attachmentsCount" : 1
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "刷新token"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM系统-老王"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_wang"
}, {
"name" : "suite",
"value" : "test_mr_wang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_wang.test_mr_wang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'刷新token'"
}, {
"name" : "case_data",
"value" : "None"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_mime",
"value" : "None"
}, {
"name" : "case_req",
"value" : "'GET'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://120.46.172.186:8080/refresh'"
}, {
"name" : "expect_data",
"value" : "{'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" : "f57865b48c63040c.json",
"parameterValues" : [ "'刷新token'", "None", "'高'", "None", "'GET'", "'正向用例'", "'http://120.46.172.186:8080/refresh'", "{'message': '刷新成功'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "f5d129465aa44425",
"name" : "正向用例",
"fullName" : "test_case.test_template.test_template.TestTemple#test_method_template",
"historyId" : "8a137f95ba4a68bf446ff9343a1271df",
"time" : {
"start" : 1704355360300,
"stop" : 1704355360351,
"duration" : 51
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x00000146481FFD80>('message')\nE + where <built-in method get of dict object at 0x00000146481FFD80> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...} = <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 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "db_fix",
"time" : {
"start" : 1704355358346,
"stop" : 1704355358547,
"duration" : 201
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1704355358547,
"stop" : 1704355358644,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x00000146481FFD80>('message')\nE + where <built-in method get of dict object at 0x00000146481FFD80> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...} = <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 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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" : "5694e134427e3428",
"name" : "log",
"source" : "5694e134427e3428.txt",
"type" : "text/plain",
"size" : 2959
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : true,
"attachmentsCount" : 1
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1704355362219,
"stop" : 1704355362219,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1704355362218,
"stop" : 1704355362218,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "刷新token"
}, {
"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" : "3212-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" : "'刷新token'"
}, {
"name" : "case_data",
"value" : "None"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_mime",
"value" : "None"
}, {
"name" : "case_req",
"value" : "'GET'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://120.46.172.186:8080/refresh'"
}, {
"name" : "expect_data",
"value" : "{'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" : "f5d129465aa44425.json",
"parameterValues" : [ "'刷新token'", "None", "'高'", "None", "'GET'", "'正向用例'", "'http://120.46.172.186:8080/refresh'", "{'message': '刷新成功'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "f5f9f0347a3577b2",
"name" : "反向用例-username错误",
"fullName" : "test_case.test_template.test_template.TestTemple#test_method_template",
"historyId" : "dfd4b38575c49a6fabc1cc90c1baa4fd",
"time" : {
"start" : 1704355359345,
"stop" : 1704355359403,
"duration" : 58
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210400>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x0000014648465300>('state')\nE + where <built-in method get of dict object at 0x0000014648465300> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg', ...} = <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 0x0000014648210400>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "db_fix",
"time" : {
"start" : 1704355358346,
"stop" : 1704355358547,
"duration" : 201
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1704355358547,
"stop" : 1704355358644,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210400>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x0000014648465300>('state')\nE + where <built-in method get of dict object at 0x0000014648465300> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg', ...} = <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 0x0000014648210400>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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" : "9849b203d2a6ed8f",
"name" : "log",
"source" : "9849b203d2a6ed8f.txt",
"type" : "text/plain",
"size" : 2851
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : true,
"attachmentsCount" : 1
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1704355362219,
"stop" : 1704355362219,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1704355362218,
"stop" : 1704355362218,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"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" : "3212-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" : "f5f9f0347a3577b2.json",
"parameterValues" : [ "'登录系统'", "{'username': 'Admin', 'password': 'MTIzNDU2'}", "'中'", "'json'", "'Post'", "'反向用例-username错误'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "f7feb1c0a096e25c",
"name" : "正向用例",
"fullName" : "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template",
"historyId" : "613ba371a5db8527b11f6809098d080c",
"time" : {
"start" : 1704355353711,
"stop" : 1704355353892,
"duration" : 181
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F2220>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F2220>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_wang\\test_mr_wang.py:65: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F2220>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F2220>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_wang\\test_mr_wang.py:65: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "8bc6bd32962ecdda",
"name" : "log",
"source" : "8bc6bd32962ecdda.txt",
"type" : "text/plain",
"size" : 2734
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : true,
"attachmentsCount" : 1
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "添加组织"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM系统-老王"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_wang"
}, {
"name" : "suite",
"value" : "test_mr_wang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_wang.test_mr_wang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'添加组织'"
}, {
"name" : "case_data",
"value" : "{'code': 'test_58_org', 'demId': '1742818777076088832', '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" : "f7feb1c0a096e25c.json",
"parameterValues" : [ "'添加组织'", "{'code': 'test_58_org', 'demId': '1742818777076088832', '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'" ]
}
\ No newline at end of file
{
"uid" : "f838ecc47a1a5ecb",
"name" : "正向用例",
"fullName" : "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template",
"historyId" : "7f952479ee2bf5bfa1e697e93b48b88e",
"time" : {
"start" : 1704355356112,
"stop" : 1704355356212,
"duration" : 100
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x00000146481B3FA0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x00000146483E2240>('message')\nE + where <built-in method get of dict object at 0x00000146483E2240> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w', 'userAttrs': {}, ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_zhang\\test_mr_zhang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x00000146481B3FA0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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_mr_zhang\\test_mr_zhang.py:65: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x00000146481B3FA0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x00000146483E2240>('message')\nE + where <built-in method get of dict object at 0x00000146483E2240> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w', 'userAttrs': {}, ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_zhang\\test_mr_zhang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x00000146481B3FA0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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_mr_zhang\\test_mr_zhang.py:65: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "9cd3b962f29c43b5",
"name" : "log",
"source" : "9cd3b962f29c43b5.txt",
"type" : "text/plain",
"size" : 591
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : true,
"attachmentsCount" : 1
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "刷新token"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM系统-老张"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_zhang"
}, {
"name" : "suite",
"value" : "test_mr_zhang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_zhang.test_mr_zhang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'刷新token'"
}, {
"name" : "case_data",
"value" : "None"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_mime",
"value" : "None"
}, {
"name" : "case_req",
"value" : "'GET'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://120.46.172.186:8080/refresh'"
}, {
"name" : "expect_data",
"value" : "{'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" : "f838ecc47a1a5ecb.json",
"parameterValues" : [ "'刷新token'", "None", "'高'", "None", "'GET'", "'正向用例'", "'http://120.46.172.186:8080/refresh'", "{'message': '刷新成功'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "f86fe05d43d68aa8",
"name" : "正向用例",
"fullName" : "test_case.test_template.test_template.TestTemple#test_method_template",
"historyId" : "ece10c98bbcc6add49fa944897380ee5",
"time" : {
"start" : 1704355360792,
"stop" : 1704355360969,
"duration" : 177
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x00000146482105E0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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 0x00000146482105E0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "db_fix",
"time" : {
"start" : 1704355358346,
"stop" : 1704355358547,
"duration" : 201
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1704355358547,
"stop" : 1704355358644,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x00000146482105E0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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 0x00000146482105E0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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" : "f6736ed9db789d48",
"name" : "log",
"source" : "f6736ed9db789d48.txt",
"type" : "text/plain",
"size" : 1095
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : true,
"attachmentsCount" : 1
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1704355362219,
"stop" : 1704355362219,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1704355362218,
"stop" : 1704355362218,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"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" : "3212-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': '1742818809330286592', '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" : "f86fe05d43d68aa8.json",
"parameterValues" : [ "'添加组织'", "{'code': 'test_58_org', 'demId': '1742818809330286592', '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'" ]
}
\ No newline at end of file
{
"uid" : "fa6d9c2b063d23ad",
"name" : "正向用例",
"fullName" : "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template",
"historyId" : "9413f08791152b96a98cbf3a971b572a",
"time" : {
"start" : 1704355356919,
"stop" : 1704355357099,
"duration" : 180
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x000001464820C2B0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_zhang\\test_mr_zhang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x000001464820C2B0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_zhang\\test_mr_zhang.py:65: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x000001464820C2B0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_zhang\\test_mr_zhang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x000001464820C2B0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_zhang\\test_mr_zhang.py:65: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "96671fc74b01eed4",
"name" : "log",
"source" : "96671fc74b01eed4.txt",
"type" : "text/plain",
"size" : 1095
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : true,
"attachmentsCount" : 1
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "添加组织"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM系统-老张"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_zhang"
}, {
"name" : "suite",
"value" : "test_mr_zhang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_zhang.test_mr_zhang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'添加组织'"
}, {
"name" : "case_data",
"value" : "{'code': 'test_58_org', 'demId': '1742818793148661760', '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" : "fa6d9c2b063d23ad.json",
"parameterValues" : [ "'添加组织'", "{'code': 'test_58_org', 'demId': '1742818793148661760', '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'" ]
}
\ No newline at end of file
{
"uid" : "fe2fc1e5b7dd8d5",
"name" : "反向用例-password为特殊字符",
"fullName" : "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template",
"historyId" : "7b1bdaf6e37bbb9241593d069d02be7e",
"time" : {
"start" : 1704355352166,
"stop" : 1704355352262,
"duration" : 96
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "ea60ad274e9c8f96",
"name" : "log",
"source" : "ea60ad274e9c8f96.txt",
"type" : "text/plain",
"size" : 105
}, {
"uid" : "8829912669f8ddef",
"name" : "stdout",
"source" : "8829912669f8ddef.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : false,
"attachmentsCount" : 2
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM系统-老王"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_wang"
}, {
"name" : "suite",
"value" : "test_mr_wang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_wang.test_mr_wang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': '♠♣▣▤▥▦▩◘◙◈'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_mime",
"value" : "'json'"
}, {
"name" : "case_req",
"value" : "'POST'"
}, {
"name" : "case_title",
"value" : "'反向用例-password为特殊字符'"
}, {
"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" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "fe2fc1e5b7dd8d5.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': '♠♣▣▤▥▦▩◘◙◈'}", "'中'", "'json'", "'POST'", "'反向用例-password为特殊字符'", "'http://120.46.172.186:8080/auth'", "{'state': False, 'message': '账号或密码错误'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "feec91ddfbcbf792",
"name" : "正向用例",
"fullName" : "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template",
"historyId" : "e6893b1d9c9092641cd9ee0f38b3c02e",
"time" : {
"start" : 1704355352679,
"stop" : 1704355352732,
"duration" : 53
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F20A0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x00000146483E3E40>('message')\nE + where <built-in method get of dict object at 0x00000146483E3E40> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw', 'userAttrs': {}, ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F20A0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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_mr_wang\\test_mr_wang.py:65: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1704355349682,
"stop" : 1704355349811,
"duration" : 129
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : false,
"shouldDisplayMessage" : false,
"attachmentsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F20A0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x00000146483E3E40>('message')\nE + where <built-in method get of dict object at 0x00000146483E3E40> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw', 'userAttrs': {}, ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F20A0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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_mr_wang\\test_mr_wang.py:65: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "4c680fc854304e62",
"name" : "log",
"source" : "4c680fc854304e62.txt",
"type" : "text/plain",
"size" : 3545
} ],
"parameters" : [ ],
"stepsCount" : 0,
"hasContent" : true,
"shouldDisplayMessage" : true,
"attachmentsCount" : 1
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "刷新token"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM系统-老王"
}, {
"name" : "parentSuite",
"value" : "test_case.test_mr_wang"
}, {
"name" : "suite",
"value" : "test_mr_wang"
}, {
"name" : "subSuite",
"value" : "TestTemple"
}, {
"name" : "host",
"value" : "TimeIsALine"
}, {
"name" : "thread",
"value" : "3212-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_mr_wang.test_mr_wang"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'刷新token'"
}, {
"name" : "case_data",
"value" : "None"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_mime",
"value" : "None"
}, {
"name" : "case_req",
"value" : "'GET'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://120.46.172.186:8080/refresh'"
}, {
"name" : "expect_data",
"value" : "{'message': '刷新成功'}"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ {
"uid" : "764df7ca3868851e",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1704355352606,
"stop" : 1704355352662,
"duration" : 56
}
}, {
"uid" : "c1e5f87b6614f785",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1704355352533,
"stop" : 1704355352587,
"duration" : 54
}
}, {
"uid" : "87f3b744dd5b95f1",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1704355352463,
"stop" : 1704355352515,
"duration" : 52
}
}, {
"uid" : "f57865b48c63040c",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1704355352394,
"stop" : 1704355352447,
"duration" : 53
}
}, {
"uid" : "1e3ee3a169452fc3",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1704355352281,
"stop" : 1704355352377,
"duration" : 96
}
} ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "feec91ddfbcbf792.json",
"parameterValues" : [ "'刷新token'", "None", "'高'", "None", "'GET'", "'正向用例'", "'http://120.46.172.186:8080/refresh'", "{'message': '刷新成功'}", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
launch_status failed=10 1704355411000000000
launch_status broken=0 1704355411000000000
launch_status passed=46 1704355411000000000
launch_status skipped=2 1704355411000000000
launch_status unknown=0 1704355411000000000
launch_time duration=12398 1704355411000000000
launch_time min_duration=0 1704355411000000000
launch_time max_duration=176 1704355411000000000
launch_time sum_duration=4799 1704355411000000000
launch_problems product_defects=10 1704355411000000000
launch_retries retries=50 1704355411000000000
launch_retries run=58 1704355411000000000
module.exports = __webpack_public_path__ + "favicon.ico";
\ No newline at end of file
{
"dbc7fb1b1ee58909cb607253c698adcf" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "9646782da645fe29",
"status" : "passed",
"time" : {
"start" : 1704355355803,
"stop" : 1704355355897,
"duration" : 94
}
} ]
},
"ece10c98bbcc6add49fa944897380ee5" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "6ba90e136be82101",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1704355361566,
"stop" : 1704355361741,
"duration" : 175
}
} ]
},
"0467fbd91f12a0527f8c61fd28e92fe1" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "3dabfc8bf0b027c5",
"status" : "passed",
"time" : {
"start" : 1704355357881,
"stop" : 1704355357941,
"duration" : 60
}
} ]
},
"64c6767d962b32558704adace2e10296" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "a59a20fc0ba77b0f",
"status" : "passed",
"time" : {
"start" : 1704355354308,
"stop" : 1704355354402,
"duration" : 94
}
} ]
},
"57b541c51bdec3b8592712d0b209474a" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "78c5744b444f5a95",
"status" : "passed",
"time" : {
"start" : 1704355356007,
"stop" : 1704355356103,
"duration" : 96
}
} ]
},
"7461be189578c787cfeec4b94a13cc4c" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "d85f1d4520a8ecf7",
"status" : "passed",
"time" : {
"start" : 1704355351052,
"stop" : 1704355351104,
"duration" : 52
}
} ]
},
"e6893b1d9c9092641cd9ee0f38b3c02e" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "feec91ddfbcbf792",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1704355352679,
"stop" : 1704355352732,
"duration" : 53
}
} ]
},
"33c30115cd8531c11c15042badbdacb8" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "36fd79a4d6e8f295",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1704355351821,
"stop" : 1704355351877,
"duration" : 56
}
} ]
},
"3887fd1c3d0366da0f7f9de735b5324c" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "9f248808b7301343",
"status" : "passed",
"time" : {
"start" : 1704355355166,
"stop" : 1704355355254,
"duration" : 88
}
} ]
},
"d8867e412abe669d3691d67a6a5d6e14" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "9b721190eb52e5f8",
"status" : "passed",
"time" : {
"start" : 1704355350985,
"stop" : 1704355351040,
"duration" : 55
}
} ]
},
"613ba371a5db8527b11f6809098d080c" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "7866d6a7319272ac",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1704355353909,
"stop" : 1704355354085,
"duration" : 176
}
} ]
},
"9413f08791152b96a98cbf3a971b572a" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "a71899121005b7c9",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1704355357691,
"stop" : 1704355357864,
"duration" : 173
}
} ]
},
"e2d113932fef6762a6a95d31124bca2a" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "57b66b4b905d32f9",
"status" : "passed",
"time" : {
"start" : 1704355351893,
"stop" : 1704355351943,
"duration" : 50
}
} ]
},
"8ecb6669ef6b8289662aed579ea2616b" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "9edb92b535bf068e",
"status" : "passed",
"time" : {
"start" : 1704355360439,
"stop" : 1704355360574,
"duration" : 135
}
} ]
},
"80c9cdd31654f8b8b78c2bf24919b474" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "2c60d97c3d799cfc",
"status" : "passed",
"time" : {
"start" : 1704355361758,
"stop" : 1704355361816,
"duration" : 58
}
} ]
},
"4bddcbc18c1233929a37bb95c1a1b89a" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "428b825a89583e",
"status" : "passed",
"time" : {
"start" : 1704355352750,
"stop" : 1704355352886,
"duration" : 136
}
} ]
},
"64ca2302b38a761ad4495e1a3a7df6ba" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "abc618454b28f98c",
"status" : "passed",
"time" : {
"start" : 1704355354235,
"stop" : 1704355354293,
"duration" : 58
}
} ]
},
"daf677fc2fd95dc52e7ba6d359a27569" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "6ae273b5697e2fdd",
"status" : "passed",
"time" : {
"start" : 1704355351213,
"stop" : 1704355351304,
"duration" : 91
}
} ]
},
"7939f6f39767b02470784f964cd3caf0" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "6430070a7396271b",
"status" : "passed",
"time" : {
"start" : 1704355361899,
"stop" : 1704355361958,
"duration" : 59
}
} ]
},
"5d98543074058e754e3e6c9788aaa828" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "e2738a34fb1062f8",
"status" : "passed",
"time" : {
"start" : 1704355351315,
"stop" : 1704355351401,
"duration" : 86
}
} ]
},
"39473a2e98044a309d46d8d4f8e4f715" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "4b1f6fad29282c68",
"status" : "passed",
"time" : {
"start" : 1704355356583,
"stop" : 1704355356717,
"duration" : 134
}
} ]
},
"4ab1de8429096cb7e36882efd6fa3c10" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "75cdf91df6fff1d1",
"status" : "passed",
"time" : {
"start" : 1704355351114,
"stop" : 1704355351204,
"duration" : 90
}
} ]
},
"a3232bdbd26fa2dd9641a5ad5c4e77ca" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "f034cb0300caa608",
"status" : "passed",
"time" : {
"start" : 1704355358870,
"stop" : 1704355358964,
"duration" : 94
}
} ]
},
"f4bb66ac962f0b403b08c5769b4d65ca" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "20e138f355c0ef13",
"status" : "passed",
"time" : {
"start" : 1704355359867,
"stop" : 1704355359961,
"duration" : 94
}
} ]
},
"9a778d0f90fe71328f22abc2447013f0" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "99641fd344ed9b30",
"status" : "passed",
"time" : {
"start" : 1704355354169,
"stop" : 1704355354224,
"duration" : 55
}
} ]
},
"b6a0b764ba9e85158653bc5839cdfcda" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "894e7ac623750b36",
"status" : "passed",
"time" : {
"start" : 1704355355069,
"stop" : 1704355355157,
"duration" : 88
}
} ]
},
"bd4554a034810ecae84139c70797361a" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "2aab5dd53243513f",
"status" : "passed",
"time" : {
"start" : 1704355361967,
"stop" : 1704355362059,
"duration" : 92
}
} ]
},
"e069d9c8b9e4a64fb0719c7df1215034" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 1,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "7c0409d251df8e26",
"status" : "skipped",
"statusDetails" : "Skipped: test3[1-2-3] depends on TestDependency::test_add_demo",
"time" : {
"start" : 1704355350671,
"stop" : 1704355350671,
"duration" : 0
}
} ]
},
"e29df96bf0b201087aade5eb4f0d82a7" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "cc8a48a980c69ec",
"status" : "passed",
"time" : {
"start" : 1704355359759,
"stop" : 1704355359856,
"duration" : 97
}
} ]
},
"0db0eace66dc28efecaf226cfb3e82da" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "4a9ca7ab7b748e8",
"status" : "passed",
"time" : {
"start" : 1704355355742,
"stop" : 1704355355793,
"duration" : 51
}
} ]
},
"8721a2d64cab6ba6f324c88ca9e788fa" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "62b80f1be9202676",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1704355350576,
"stop" : 1704355350662,
"duration" : 86
}
} ]
},
"d65f14bcd3e93900fed39a2ae596dcaf" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "c7d78f8f23c410d0",
"status" : "passed",
"time" : {
"start" : 1704355354848,
"stop" : 1704355354900,
"duration" : 52
}
} ]
},
"4fbd199e567aff70114c4071f03e1ac7" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "4b4a91fc89752c53",
"status" : "passed",
"time" : {
"start" : 1704355358194,
"stop" : 1704355358335,
"duration" : 141
}
} ]
},
"609c144ffca008faa731f5a2a1a90e2e" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "ad441c3426b3d485",
"status" : "passed",
"time" : {
"start" : 1704355361835,
"stop" : 1704355361888,
"duration" : 53
}
} ]
},
"a8e1d6b9521f1a7fd6055daae44e0481" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "d99f9f23e9ff60f9",
"status" : "passed",
"time" : {
"start" : 1704355349812,
"stop" : 1704355349909,
"duration" : 97
}
} ]
},
"eae10236a39cd7489d16c9308fc1e207" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "e1b9eac85ad98e31",
"status" : "passed",
"time" : {
"start" : 1704355351956,
"stop" : 1704355352052,
"duration" : 96
}
} ]
},
"7202381dddb21f932d39e36e18235e7a" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "4d3082647f787ce2",
"status" : "passed",
"time" : {
"start" : 1704355358976,
"stop" : 1704355359073,
"duration" : 97
}
} ]
},
"acad9b9ca657e1d5368ecf4d3f5c19f9" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "a6583647569e5e2d",
"status" : "passed",
"time" : {
"start" : 1704355354102,
"stop" : 1704355354161,
"duration" : 59
}
} ]
},
"5cf0ca9bfb84009eee04be6339e4cd3d" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "c8088967e0399600",
"status" : "passed",
"time" : {
"start" : 1704355358645,
"stop" : 1704355358701,
"duration" : 56
}
} ]
},
"524fee58c602e51bb671e53cde950aa7" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "efd9d4bbfcb5bc27",
"status" : "passed",
"time" : {
"start" : 1704355358770,
"stop" : 1704355358861,
"duration" : 91
}
} ]
},
"a474934a1f39ac773935fa131a391ff4" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "8cf1715620386fe5",
"status" : "passed",
"time" : {
"start" : 1704355354412,
"stop" : 1704355354552,
"duration" : 140
}
} ]
},
"5cf09777cb8bfb0870c7462f3680ad17" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "d1d4a2a8205e4c9b",
"status" : "passed",
"time" : {
"start" : 1704355358016,
"stop" : 1704355358081,
"duration" : 65
}
} ]
},
"e51dfd8146d9c71671ef3f4dd58d71eb" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "6d75a984cf49a8e9",
"status" : "passed",
"time" : {
"start" : 1704355354966,
"stop" : 1704355355058,
"duration" : 92
}
} ]
},
"39b12c49be6a4cf5dc4e214d57da103d" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "2d2d31f7dc6e6125",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1704355355668,
"stop" : 1704355355727,
"duration" : 59
}
} ]
},
"0943f604e109454d53a473395f7e00ef" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "1dc52fa4585ef704",
"status" : "passed",
"time" : {
"start" : 1704355357951,
"stop" : 1704355358007,
"duration" : 56
}
} ]
},
"b78f5cccbb0d5261b5a9735b181a2f04" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "3864a5e70cd4a9b8",
"status" : "passed",
"time" : {
"start" : 1704355354909,
"stop" : 1704355354957,
"duration" : 48
}
} ]
},
"83fc972a3ddb35b80ad97af4a03157c7" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "47a605f9b90c7cb7",
"status" : "passed",
"time" : {
"start" : 1704355359596,
"stop" : 1704355359647,
"duration" : 51
}
} ]
},
"8a137f95ba4a68bf446ff9343a1271df" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "de518c73ecae036",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1704355360369,
"stop" : 1704355360421,
"duration" : 52
}
} ]
},
"004074446ba9419929ba197d5ba61664" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "aa3466af57b8aaaf",
"status" : "passed",
"time" : {
"start" : 1704355358092,
"stop" : 1704355358184,
"duration" : 92
}
} ]
},
"b673aae92214b6cf57ebd3f2bcc747fc" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "e67b49c2340cf8a8",
"status" : "passed",
"time" : {
"start" : 1704355362068,
"stop" : 1704355362210,
"duration" : 142
}
} ]
},
"668a8e3f30e3e40742ca0446d2e2579a" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "f23bc22a67709133",
"status" : "passed",
"time" : {
"start" : 1704355359655,
"stop" : 1704355359749,
"duration" : 94
}
} ]
},
"455987a44c5b38bba06bf0a34630bf2f" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 1,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "ec4096a0ca542aa5",
"status" : "skipped",
"statusDetails" : "Skipped: test3[4-5-6] depends on TestDependency::test_add_demo",
"time" : {
"start" : 1704355350674,
"stop" : 1704355350674,
"duration" : 0
}
} ]
},
"dfd4b38575c49a6fabc1cc90c1baa4fd" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "46bb85a904e53e8c",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1704355359495,
"stop" : 1704355359549,
"duration" : 54
}
} ]
},
"094640862cf1a2dd8fdee8fafdf5156c" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "931a4cbf3b51d3d2",
"status" : "passed",
"time" : {
"start" : 1704355352061,
"stop" : 1704355352154,
"duration" : 93
}
} ]
},
"b6ce04cc30587adda64f0f4fae297021" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "bc6d8f7590db7da3",
"status" : "passed",
"time" : {
"start" : 1704355355906,
"stop" : 1704355355998,
"duration" : 92
}
} ]
},
"7f952479ee2bf5bfa1e697e93b48b88e" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "4c9b03a5265c5f78",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1704355356511,
"stop" : 1704355356566,
"duration" : 55
}
} ]
},
"7b1bdaf6e37bbb9241593d069d02be7e" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "fe2fc1e5b7dd8d5",
"status" : "passed",
"time" : {
"start" : 1704355352166,
"stop" : 1704355352262,
"duration" : 96
}
} ]
},
"429f6958d2a8507a4d0888c495ec43c9" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "52ae42406a7e865f",
"status" : "passed",
"time" : {
"start" : 1704355358711,
"stop" : 1704355358761,
"duration" : 50
}
} ]
}
}
\ No newline at end of file
[ {
"data" : {
"run" : 58,
"retry" : 50
}
} ]
\ No newline at end of file
<!DOCTYPE html>
<html dir="ltr">
<head>
<meta charset="utf-8">
<title>Allure Report</title>
<link rel="favicon" href="favicon.ico?v=2">
<link rel="stylesheet" href="styles.css">
<link rel="stylesheet" href="plugins/screen-diff/styles.css">
</head>
<body>
<div id="alert"></div>
<div id="content">
<span class="spinner">
<span class="spinner__circle"></span>
</span>
</div>
<div id="popup"></div>
<script src="app.js"></script>
<script src="plugins/behaviors/index.js"></script>
<script src="plugins/packages/index.js"></script>
<script src="plugins/screen-diff/index.js"></script>
</body>
</html>
'use strict';
allure.api.addTranslation('en', {
tab: {
behaviors: {
name: 'Behaviors'
}
},
widget: {
behaviors: {
name: 'Features by stories',
showAll: 'show all'
}
}
});
allure.api.addTranslation('ru', {
tab: {
behaviors: {
name: 'Функциональность'
}
},
widget: {
behaviors: {
name: 'Функциональность',
showAll: 'показать все'
}
}
});
allure.api.addTranslation('zh', {
tab: {
behaviors: {
name: '功能'
}
},
widget: {
behaviors: {
name: '特性场景',
showAll: '显示所有'
}
}
});
allure.api.addTranslation('de', {
tab: {
behaviors: {
name: 'Verhalten'
}
},
widget: {
behaviors: {
name: 'Features nach Stories',
showAll: 'Zeige alle'
}
}
});
allure.api.addTranslation('nl', {
tab: {
behaviors: {
name: 'Functionaliteit'
}
},
widget: {
behaviors: {
name: 'Features en story’s',
showAll: 'Toon alle'
}
}
});
allure.api.addTranslation('he', {
tab: {
behaviors: {
name: 'התנהגויות'
}
},
widget: {
behaviors: {
name: 'תכונות לפי סיפורי משתמש',
showAll: 'הצג הכול'
}
}
});
allure.api.addTranslation('br', {
tab: {
behaviors: {
name: 'Comportamentos'
}
},
widget: {
behaviors: {
name: 'Funcionalidades por história',
showAll: 'Mostrar tudo'
}
}
});
allure.api.addTranslation('ja', {
tab: {
behaviors: {
name: '振る舞い'
}
},
widget: {
behaviors: {
name: 'ストーリー別の機能',
showAll: '全て表示'
}
}
});
allure.api.addTranslation('es', {
tab: {
behaviors: {
name: 'Funcionalidades'
}
},
widget: {
behaviors: {
name: 'Funcionalidades por Historias de Usuario',
showAll: 'mostrar todo'
}
}
});
allure.api.addTranslation('kr', {
tab: {
behaviors: {
name: '동작'
}
},
widget: {
behaviors: {
name: '스토리별 기능',
showAll: '전체 보기'
}
}
});
allure.api.addTranslation('fr', {
tab: {
behaviors: {
name: 'Comportements'
}
},
widget: {
behaviors: {
name: 'Thèmes par histoires',
showAll: 'Montrer tout'
}
}
});
allure.api.addTab('behaviors', {
title: 'tab.behaviors.name', icon: 'fa fa-list',
route: 'behaviors(/)(:testGroup)(/)(:testResult)(/)(:testResultTab)(/)',
onEnter: (function (testGroup, testResult, testResultTab) {
return new allure.components.TreeLayout({
testGroup: testGroup,
testResult: testResult,
testResultTab: testResultTab,
tabName: 'tab.behaviors.name',
baseUrl: 'behaviors',
url: 'data/behaviors.json',
csvUrl: 'data/behaviors.csv'
});
})
});
allure.api.addWidget('widgets', 'behaviors', allure.components.WidgetStatusView.extend({
rowTag: 'a',
title: 'widget.behaviors.name',
baseUrl: 'behaviors',
showLinks: true
}));
'use strict';
allure.api.addTranslation('en', {
tab: {
packages: {
name: 'Packages'
}
}
});
allure.api.addTranslation('ru', {
tab: {
packages: {
name: 'Пакеты'
}
}
});
allure.api.addTranslation('zh', {
tab: {
packages: {
name: '包'
}
}
});
allure.api.addTranslation('de', {
tab: {
packages: {
name: 'Pakete'
}
}
});
allure.api.addTranslation('nl', {
tab: {
packages: {
name: 'Packages'
}
}
});
allure.api.addTranslation('he', {
tab: {
packages: {
name: 'חבילות'
}
}
});
allure.api.addTranslation('br', {
tab: {
packages: {
name: 'Pacotes'
}
}
});
allure.api.addTranslation('ja', {
tab: {
packages: {
name: 'パッケージ'
}
}
});
allure.api.addTranslation('es', {
tab: {
packages: {
name: 'Paquetes'
}
}
});
allure.api.addTranslation('kr', {
tab: {
packages: {
name: '패키지'
}
}
});
allure.api.addTranslation('fr', {
tab: {
packages: {
name: 'Paquets'
}
}
});
allure.api.addTab('packages', {
title: 'tab.packages.name', icon: 'fa fa-align-left',
route: 'packages(/)(:testGroup)(/)(:testResult)(/)(:testResultTab)(/)',
onEnter: (function (testGroup, testResult, testResultTab) {
return new allure.components.TreeLayout({
testGroup: testGroup,
testResult: testResult,
testResultTab: testResultTab,
tabName: 'tab.packages.name',
baseUrl: 'packages',
url: 'data/packages.json'
});
})
});
(function () {
var settings = allure.getPluginSettings('screen-diff', { diffType: 'diff' });
function renderImage(src) {
return (
'<div class="screen-diff__container">' +
'<img class="screen-diff__image" src="' +
src +
'">' +
'</div>'
);
}
function findImage(data, name) {
if (data.testStage && data.testStage.attachments) {
var matchedImage = data.testStage.attachments.filter(function (attachment) {
return attachment.name === name;
})[0];
if (matchedImage) {
return 'data/attachments/' + matchedImage.source;
}
}
return null;
}
function renderDiffContent(type, diffImage, actualImage, expectedImage) {
if (type === 'diff') {
if (diffImage) {
return renderImage(diffImage);
}
}
if (type === 'overlay' && expectedImage) {
return (
'<div class="screen-diff__overlay screen-diff__container">' +
'<img class="screen-diff__image" src="' +
expectedImage +
'">' +
'<div class="screen-diff__image-over">' +
'<img class="screen-diff__image" src="' +
actualImage +
'">' +
'</div>' +
'</div>'
);
}
if (actualImage) {
return renderImage(actualImage);
}
return 'No diff data provided';
}
var TestResultView = Backbone.Marionette.View.extend({
regions: {
subView: '.screen-diff-view',
},
template: function () {
return '<div class="screen-diff-view"></div>';
},
onRender: function () {
var data = this.model.toJSON();
var testType = data.labels.filter(function (label) {
return label.name === 'testType';
})[0];
var diffImage = findImage(data, 'diff');
var actualImage = findImage(data, 'actual');
var expectedImage = findImage(data, 'expected');
if (!testType || testType.value !== 'screenshotDiff') {
return;
}
this.showChildView(
'subView',
new ScreenDiffView({
diffImage: diffImage,
actualImage: actualImage,
expectedImage: expectedImage,
}),
);
},
});
var ErrorView = Backbone.Marionette.View.extend({
templateContext: function () {
return this.options;
},
template: function (data) {
return '<pre class="screen-diff-error">' + data.error + '</pre>';
},
});
var AttachmentView = Backbone.Marionette.View.extend({
regions: {
subView: '.screen-diff-view',
},
template: function () {
return '<div class="screen-diff-view"></div>';
},
onRender: function () {
jQuery
.getJSON(this.options.sourceUrl)
.then(this.renderScreenDiffView.bind(this), this.renderErrorView.bind(this));
},
renderErrorView: function (error) {
console.log(error);
this.showChildView(
'subView',
new ErrorView({
error: error.statusText,
}),
);
},
renderScreenDiffView: function (data) {
this.showChildView(
'subView',
new ScreenDiffView({
diffImage: data.diff,
actualImage: data.actual,
expectedImage: data.expected,
}),
);
},
});
var ScreenDiffView = Backbone.Marionette.View.extend({
className: 'pane__section',
events: function () {
return {
['click [name="screen-diff-type-' + this.cid + '"]']: 'onDiffTypeChange',
'mousemove .screen-diff__overlay': 'onOverlayMove',
};
},
initialize: function (options) {
this.diffImage = options.diffImage;
this.actualImage = options.actualImage;
this.expectedImage = options.expectedImage;
this.radioName = 'screen-diff-type-' + this.cid;
},
templateContext: function () {
return {
diffType: settings.get('diffType'),
diffImage: this.diffImage,
actualImage: this.actualImage,
expectedImage: this.expectedImage,
radioName: this.radioName,
};
},
template: function (data) {
if (!data.diffImage && !data.actualImage && !data.expectedImage) {
return '';
}
return (
'<h3 class="pane__section-title">Screen Diff</h3>' +
'<div class="screen-diff__content">' +
'<div class="screen-diff__switchers">' +
'<label><input type="radio" name="' +
data.radioName +
'" value="diff"> Show diff</label>' +
'<label><input type="radio" name="' +
data.radioName +
'" value="overlay"> Show overlay</label>' +
'</div>' +
renderDiffContent(
data.diffType,
data.diffImage,
data.actualImage,
data.expectedImage,
) +
'</div>'
);
},
adjustImageSize: function (event) {
var overImage = this.$(event.target);
overImage.width(overImage.width());
},
onRender: function () {
const diffType = settings.get('diffType');
this.$('[name="' + this.radioName + '"][value="' + diffType + '"]').prop(
'checked',
true,
);
if (diffType === 'overlay') {
this.$('.screen-diff__image-over img').on('load', this.adjustImageSize.bind(this));
}
},
onOverlayMove: function (event) {
var pageX = event.pageX;
var containerScroll = this.$('.screen-diff__container').scrollLeft();
var elementX = event.currentTarget.getBoundingClientRect().left;
var delta = pageX - elementX + containerScroll;
this.$('.screen-diff__image-over').width(delta);
},
onDiffTypeChange: function (event) {
settings.save('diffType', event.target.value);
this.render();
},
});
allure.api.addTestResultBlock(TestResultView, { position: 'before' });
allure.api.addAttachmentViewer('application/vnd.allure.image.diff', {
View: AttachmentView,
icon: 'fa fa-exchange',
});
})();
{
"total" : 4,
"items" : [ {
"uid" : "3d929c4842748a0d0bf5ee56c33292bd",
"name" : "BPM系统-老王",
"statistic" : {
"failed" : 2,
"broken" : 0,
"skipped" : 0,
"passed" : 2,
"unknown" : 0,
"total" : 4
}
}, {
"uid" : "6e01d6d59ee91e3571e91df05295436f",
"name" : "BPM系统-老张",
"statistic" : {
"failed" : 2,
"broken" : 0,
"skipped" : 0,
"passed" : 2,
"unknown" : 0,
"total" : 4
}
}, {
"uid" : "efb76cd6410c6e29583ad388cb0e0229",
"name" : "BPM系统-模板",
"statistic" : {
"failed" : 2,
"broken" : 0,
"skipped" : 0,
"passed" : 2,
"unknown" : 0,
"total" : 4
}
}, {
"uid" : "754fe5ef4d45c8d27865a3db1a0c7367",
"name" : "BPM系统依赖",
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 1,
"passed" : 1,
"unknown" : 0,
"total" : 3
}
} ]
}
\ No newline at end of file
[ {
"data" : {
"Product defects" : 10
}
} ]
\ No newline at end of file
[ {
"data" : {
"duration" : 12398
}
} ]
\ No newline at end of file
[ {
"uid" : "2aab5dd53243513f",
"name" : "正向用例",
"time" : {
"start" : 1704355361967,
"stop" : 1704355362059,
"duration" : 92
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "9edb92b535bf068e",
"name" : "正向用例",
"time" : {
"start" : 1704355360439,
"stop" : 1704355360574,
"duration" : 135
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4b4a91fc89752c53",
"name" : "正向用例",
"time" : {
"start" : 1704355358194,
"stop" : 1704355358335,
"duration" : 141
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "52ae42406a7e865f",
"name" : "反向用例-username为空",
"time" : {
"start" : 1704355358711,
"stop" : 1704355358761,
"duration" : 50
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "8cf1715620386fe5",
"name" : "正向用例",
"time" : {
"start" : 1704355354412,
"stop" : 1704355354552,
"duration" : 140
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "bc6d8f7590db7da3",
"name" : "反向用例-password过短",
"time" : {
"start" : 1704355355906,
"stop" : 1704355355998,
"duration" : 92
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4b1f6fad29282c68",
"name" : "正向用例",
"time" : {
"start" : 1704355356583,
"stop" : 1704355356717,
"duration" : 134
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "9b721190eb52e5f8",
"name" : "正向用例-username和password正确",
"time" : {
"start" : 1704355350985,
"stop" : 1704355351040,
"duration" : 55
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "6ae273b5697e2fdd",
"name" : "反向用例-username过长",
"time" : {
"start" : 1704355351213,
"stop" : 1704355351304,
"duration" : 91
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "d1d4a2a8205e4c9b",
"name" : "正向用例",
"time" : {
"start" : 1704355358016,
"stop" : 1704355358081,
"duration" : 65
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "9646782da645fe29",
"name" : "反向用例-password过长",
"time" : {
"start" : 1704355355803,
"stop" : 1704355355897,
"duration" : 94
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4c9b03a5265c5f78",
"name" : "正向用例",
"time" : {
"start" : 1704355356511,
"stop" : 1704355356566,
"duration" : 55
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "a71899121005b7c9",
"name" : "正向用例",
"time" : {
"start" : 1704355357691,
"stop" : 1704355357864,
"duration" : 173
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "36fd79a4d6e8f295",
"name" : "反向用例-username错误",
"time" : {
"start" : 1704355351821,
"stop" : 1704355351877,
"duration" : 56
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "efd9d4bbfcb5bc27",
"name" : "反向用例-username过短",
"time" : {
"start" : 1704355358770,
"stop" : 1704355358861,
"duration" : 91
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "e2738a34fb1062f8",
"name" : "反向用例-username为特殊字符",
"time" : {
"start" : 1704355351315,
"stop" : 1704355351401,
"duration" : 86
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "99641fd344ed9b30",
"name" : "正向用例",
"time" : {
"start" : 1704355354169,
"stop" : 1704355354224,
"duration" : 55
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "e1b9eac85ad98e31",
"name" : "反向用例-password过长",
"time" : {
"start" : 1704355351956,
"stop" : 1704355352052,
"duration" : 96
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "3dabfc8bf0b027c5",
"name" : "正向用例",
"time" : {
"start" : 1704355357881,
"stop" : 1704355357941,
"duration" : 60
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "c7d78f8f23c410d0",
"name" : "正向用例-username和password正确",
"time" : {
"start" : 1704355354848,
"stop" : 1704355354900,
"duration" : 52
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "75cdf91df6fff1d1",
"name" : "反向用例-username过短",
"time" : {
"start" : 1704355351114,
"stop" : 1704355351204,
"duration" : 90
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "428b825a89583e",
"name" : "正向用例",
"time" : {
"start" : 1704355352750,
"stop" : 1704355352886,
"duration" : 136
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "e67b49c2340cf8a8",
"name" : "正向用例",
"time" : {
"start" : 1704355362068,
"stop" : 1704355362210,
"duration" : 142
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "d85f1d4520a8ecf7",
"name" : "反向用例-username为空",
"time" : {
"start" : 1704355351052,
"stop" : 1704355351104,
"duration" : 52
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "3864a5e70cd4a9b8",
"name" : "反向用例-username为空",
"time" : {
"start" : 1704355354909,
"stop" : 1704355354957,
"duration" : 48
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "abc618454b28f98c",
"name" : "正向用例",
"time" : {
"start" : 1704355354235,
"stop" : 1704355354293,
"duration" : 58
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "6430070a7396271b",
"name" : "正向用例",
"time" : {
"start" : 1704355361899,
"stop" : 1704355361958,
"duration" : 59
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "c8088967e0399600",
"name" : "正向用例-username和password正确",
"time" : {
"start" : 1704355358645,
"stop" : 1704355358701,
"duration" : 56
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "62b80f1be9202676",
"name" : "正向用例",
"time" : {
"start" : 1704355350576,
"stop" : 1704355350662,
"duration" : 86
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "f23bc22a67709133",
"name" : "反向用例-password过长",
"time" : {
"start" : 1704355359655,
"stop" : 1704355359749,
"duration" : 94
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "78c5744b444f5a95",
"name" : "反向用例-password为特殊字符",
"time" : {
"start" : 1704355356007,
"stop" : 1704355356103,
"duration" : 96
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "feec91ddfbcbf792",
"name" : "正向用例",
"time" : {
"start" : 1704355352679,
"stop" : 1704355352732,
"duration" : 53
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "ad441c3426b3d485",
"name" : "正向用例",
"time" : {
"start" : 1704355361835,
"stop" : 1704355361888,
"duration" : 53
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "7c0409d251df8e26",
"name" : "正向用例",
"time" : {
"start" : 1704355350671,
"stop" : 1704355350671,
"duration" : 0
},
"status" : "skipped",
"severity" : "normal"
}, {
"uid" : "1dc52fa4585ef704",
"name" : "正向用例",
"time" : {
"start" : 1704355357951,
"stop" : 1704355358007,
"duration" : 56
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4d3082647f787ce2",
"name" : "反向用例-username为特殊字符",
"time" : {
"start" : 1704355358976,
"stop" : 1704355359073,
"duration" : 97
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "aa3466af57b8aaaf",
"name" : "正向用例",
"time" : {
"start" : 1704355358092,
"stop" : 1704355358184,
"duration" : 92
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "fe2fc1e5b7dd8d5",
"name" : "反向用例-password为特殊字符",
"time" : {
"start" : 1704355352166,
"stop" : 1704355352262,
"duration" : 96
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "a59a20fc0ba77b0f",
"name" : "正向用例",
"time" : {
"start" : 1704355354308,
"stop" : 1704355354402,
"duration" : 94
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4a9ca7ab7b748e8",
"name" : "反向用例-password为空",
"time" : {
"start" : 1704355355742,
"stop" : 1704355355793,
"duration" : 51
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "57b66b4b905d32f9",
"name" : "反向用例-password为空",
"time" : {
"start" : 1704355351893,
"stop" : 1704355351943,
"duration" : 50
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "2c60d97c3d799cfc",
"name" : "正向用例",
"time" : {
"start" : 1704355361758,
"stop" : 1704355361816,
"duration" : 58
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "47a605f9b90c7cb7",
"name" : "反向用例-password为空",
"time" : {
"start" : 1704355359596,
"stop" : 1704355359647,
"duration" : 51
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "931a4cbf3b51d3d2",
"name" : "反向用例-password过短",
"time" : {
"start" : 1704355352061,
"stop" : 1704355352154,
"duration" : 93
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "de518c73ecae036",
"name" : "正向用例",
"time" : {
"start" : 1704355360369,
"stop" : 1704355360421,
"duration" : 52
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "a6583647569e5e2d",
"name" : "正向用例",
"time" : {
"start" : 1704355354102,
"stop" : 1704355354161,
"duration" : 59
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "d99f9f23e9ff60f9",
"name" : "正向用例",
"time" : {
"start" : 1704355349812,
"stop" : 1704355349909,
"duration" : 97
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "7866d6a7319272ac",
"name" : "正向用例",
"time" : {
"start" : 1704355353909,
"stop" : 1704355354085,
"duration" : 176
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "9f248808b7301343",
"name" : "反向用例-username为特殊字符",
"time" : {
"start" : 1704355355166,
"stop" : 1704355355254,
"duration" : 88
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "20e138f355c0ef13",
"name" : "反向用例-password为特殊字符",
"time" : {
"start" : 1704355359867,
"stop" : 1704355359961,
"duration" : 94
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "cc8a48a980c69ec",
"name" : "反向用例-password过短",
"time" : {
"start" : 1704355359759,
"stop" : 1704355359856,
"duration" : 97
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "6d75a984cf49a8e9",
"name" : "反向用例-username过短",
"time" : {
"start" : 1704355354966,
"stop" : 1704355355058,
"duration" : 92
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "46bb85a904e53e8c",
"name" : "反向用例-username错误",
"time" : {
"start" : 1704355359495,
"stop" : 1704355359549,
"duration" : 54
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "894e7ac623750b36",
"name" : "反向用例-username过长",
"time" : {
"start" : 1704355355069,
"stop" : 1704355355157,
"duration" : 88
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "2d2d31f7dc6e6125",
"name" : "反向用例-username错误",
"time" : {
"start" : 1704355355668,
"stop" : 1704355355727,
"duration" : 59
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "f034cb0300caa608",
"name" : "反向用例-username过长",
"time" : {
"start" : 1704355358870,
"stop" : 1704355358964,
"duration" : 94
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "ec4096a0ca542aa5",
"name" : "正向用例",
"time" : {
"start" : 1704355350674,
"stop" : 1704355350674,
"duration" : 0
},
"status" : "skipped",
"severity" : "normal"
}, {
"uid" : "6ba90e136be82101",
"name" : "正向用例",
"time" : {
"start" : 1704355361566,
"stop" : 1704355361741,
"duration" : 175
},
"status" : "failed",
"severity" : "normal"
} ]
\ No newline at end of file
[ {
"data" : {
"run" : 58,
"retry" : 50
}
} ]
\ No newline at end of file
[ {
"uid" : "3dabfc8bf0b027c5",
"name" : "正向用例",
"time" : {
"start" : 1704355357881,
"stop" : 1704355357941,
"duration" : 60
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "20e138f355c0ef13",
"name" : "反向用例-password为特殊字符",
"time" : {
"start" : 1704355359867,
"stop" : 1704355359961,
"duration" : 94
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "75cdf91df6fff1d1",
"name" : "反向用例-username过短",
"time" : {
"start" : 1704355351114,
"stop" : 1704355351204,
"duration" : 90
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "62b80f1be9202676",
"name" : "正向用例",
"time" : {
"start" : 1704355350576,
"stop" : 1704355350662,
"duration" : 86
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "a71899121005b7c9",
"name" : "正向用例",
"time" : {
"start" : 1704355357691,
"stop" : 1704355357864,
"duration" : 173
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "f23bc22a67709133",
"name" : "反向用例-password过长",
"time" : {
"start" : 1704355359655,
"stop" : 1704355359749,
"duration" : 94
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "7866d6a7319272ac",
"name" : "正向用例",
"time" : {
"start" : 1704355353909,
"stop" : 1704355354085,
"duration" : 176
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "abc618454b28f98c",
"name" : "正向用例",
"time" : {
"start" : 1704355354235,
"stop" : 1704355354293,
"duration" : 58
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "9f248808b7301343",
"name" : "反向用例-username为特殊字符",
"time" : {
"start" : 1704355355166,
"stop" : 1704355355254,
"duration" : 88
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "894e7ac623750b36",
"name" : "反向用例-username过长",
"time" : {
"start" : 1704355355069,
"stop" : 1704355355157,
"duration" : 88
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "ad441c3426b3d485",
"name" : "正向用例",
"time" : {
"start" : 1704355361835,
"stop" : 1704355361888,
"duration" : 53
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "c8088967e0399600",
"name" : "正向用例-username和password正确",
"time" : {
"start" : 1704355358645,
"stop" : 1704355358701,
"duration" : 56
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "d85f1d4520a8ecf7",
"name" : "反向用例-username为空",
"time" : {
"start" : 1704355351052,
"stop" : 1704355351104,
"duration" : 52
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "9b721190eb52e5f8",
"name" : "正向用例-username和password正确",
"time" : {
"start" : 1704355350985,
"stop" : 1704355351040,
"duration" : 55
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "9646782da645fe29",
"name" : "反向用例-password过长",
"time" : {
"start" : 1704355355803,
"stop" : 1704355355897,
"duration" : 94
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "7c0409d251df8e26",
"name" : "正向用例",
"time" : {
"start" : 1704355350671,
"stop" : 1704355350671,
"duration" : 0
},
"status" : "skipped",
"severity" : "normal"
}, {
"uid" : "9edb92b535bf068e",
"name" : "正向用例",
"time" : {
"start" : 1704355360439,
"stop" : 1704355360574,
"duration" : 135
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "8cf1715620386fe5",
"name" : "正向用例",
"time" : {
"start" : 1704355354412,
"stop" : 1704355354552,
"duration" : 140
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "57b66b4b905d32f9",
"name" : "反向用例-password为空",
"time" : {
"start" : 1704355351893,
"stop" : 1704355351943,
"duration" : 50
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "2c60d97c3d799cfc",
"name" : "正向用例",
"time" : {
"start" : 1704355361758,
"stop" : 1704355361816,
"duration" : 58
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "1dc52fa4585ef704",
"name" : "正向用例",
"time" : {
"start" : 1704355357951,
"stop" : 1704355358007,
"duration" : 56
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "99641fd344ed9b30",
"name" : "正向用例",
"time" : {
"start" : 1704355354169,
"stop" : 1704355354224,
"duration" : 55
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "a6583647569e5e2d",
"name" : "正向用例",
"time" : {
"start" : 1704355354102,
"stop" : 1704355354161,
"duration" : 59
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "46bb85a904e53e8c",
"name" : "反向用例-username错误",
"time" : {
"start" : 1704355359495,
"stop" : 1704355359549,
"duration" : 54
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "2d2d31f7dc6e6125",
"name" : "反向用例-username错误",
"time" : {
"start" : 1704355355668,
"stop" : 1704355355727,
"duration" : 59
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "4d3082647f787ce2",
"name" : "反向用例-username为特殊字符",
"time" : {
"start" : 1704355358976,
"stop" : 1704355359073,
"duration" : 97
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4b1f6fad29282c68",
"name" : "正向用例",
"time" : {
"start" : 1704355356583,
"stop" : 1704355356717,
"duration" : 134
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "47a605f9b90c7cb7",
"name" : "反向用例-password为空",
"time" : {
"start" : 1704355359596,
"stop" : 1704355359647,
"duration" : 51
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "52ae42406a7e865f",
"name" : "反向用例-username为空",
"time" : {
"start" : 1704355358711,
"stop" : 1704355358761,
"duration" : 50
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "6ba90e136be82101",
"name" : "正向用例",
"time" : {
"start" : 1704355361566,
"stop" : 1704355361741,
"duration" : 175
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "3864a5e70cd4a9b8",
"name" : "反向用例-username为空",
"time" : {
"start" : 1704355354909,
"stop" : 1704355354957,
"duration" : 48
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "e1b9eac85ad98e31",
"name" : "反向用例-password过长",
"time" : {
"start" : 1704355351956,
"stop" : 1704355352052,
"duration" : 96
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "de518c73ecae036",
"name" : "正向用例",
"time" : {
"start" : 1704355360369,
"stop" : 1704355360421,
"duration" : 52
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "efd9d4bbfcb5bc27",
"name" : "反向用例-username过短",
"time" : {
"start" : 1704355358770,
"stop" : 1704355358861,
"duration" : 91
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "428b825a89583e",
"name" : "正向用例",
"time" : {
"start" : 1704355352750,
"stop" : 1704355352886,
"duration" : 136
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4b4a91fc89752c53",
"name" : "正向用例",
"time" : {
"start" : 1704355358194,
"stop" : 1704355358335,
"duration" : 141
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "6430070a7396271b",
"name" : "正向用例",
"time" : {
"start" : 1704355361899,
"stop" : 1704355361958,
"duration" : 59
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "c7d78f8f23c410d0",
"name" : "正向用例-username和password正确",
"time" : {
"start" : 1704355354848,
"stop" : 1704355354900,
"duration" : 52
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "d99f9f23e9ff60f9",
"name" : "正向用例",
"time" : {
"start" : 1704355349812,
"stop" : 1704355349909,
"duration" : 97
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "78c5744b444f5a95",
"name" : "反向用例-password为特殊字符",
"time" : {
"start" : 1704355356007,
"stop" : 1704355356103,
"duration" : 96
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "ec4096a0ca542aa5",
"name" : "正向用例",
"time" : {
"start" : 1704355350674,
"stop" : 1704355350674,
"duration" : 0
},
"status" : "skipped",
"severity" : "normal"
}, {
"uid" : "feec91ddfbcbf792",
"name" : "正向用例",
"time" : {
"start" : 1704355352679,
"stop" : 1704355352732,
"duration" : 53
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "e67b49c2340cf8a8",
"name" : "正向用例",
"time" : {
"start" : 1704355362068,
"stop" : 1704355362210,
"duration" : 142
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "e2738a34fb1062f8",
"name" : "反向用例-username为特殊字符",
"time" : {
"start" : 1704355351315,
"stop" : 1704355351401,
"duration" : 86
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4c9b03a5265c5f78",
"name" : "正向用例",
"time" : {
"start" : 1704355356511,
"stop" : 1704355356566,
"duration" : 55
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "4a9ca7ab7b748e8",
"name" : "反向用例-password为空",
"time" : {
"start" : 1704355355742,
"stop" : 1704355355793,
"duration" : 51
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "aa3466af57b8aaaf",
"name" : "正向用例",
"time" : {
"start" : 1704355358092,
"stop" : 1704355358184,
"duration" : 92
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "bc6d8f7590db7da3",
"name" : "反向用例-password过短",
"time" : {
"start" : 1704355355906,
"stop" : 1704355355998,
"duration" : 92
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "f034cb0300caa608",
"name" : "反向用例-username过长",
"time" : {
"start" : 1704355358870,
"stop" : 1704355358964,
"duration" : 94
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "6d75a984cf49a8e9",
"name" : "反向用例-username过短",
"time" : {
"start" : 1704355354966,
"stop" : 1704355355058,
"duration" : 92
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "cc8a48a980c69ec",
"name" : "反向用例-password过短",
"time" : {
"start" : 1704355359759,
"stop" : 1704355359856,
"duration" : 97
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "2aab5dd53243513f",
"name" : "正向用例",
"time" : {
"start" : 1704355361967,
"stop" : 1704355362059,
"duration" : 92
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "36fd79a4d6e8f295",
"name" : "反向用例-username错误",
"time" : {
"start" : 1704355351821,
"stop" : 1704355351877,
"duration" : 56
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "fe2fc1e5b7dd8d5",
"name" : "反向用例-password为特殊字符",
"time" : {
"start" : 1704355352166,
"stop" : 1704355352262,
"duration" : 96
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "a59a20fc0ba77b0f",
"name" : "正向用例",
"time" : {
"start" : 1704355354308,
"stop" : 1704355354402,
"duration" : 94
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "6ae273b5697e2fdd",
"name" : "反向用例-username过长",
"time" : {
"start" : 1704355351213,
"stop" : 1704355351304,
"duration" : 91
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "d1d4a2a8205e4c9b",
"name" : "正向用例",
"time" : {
"start" : 1704355358016,
"stop" : 1704355358081,
"duration" : 65
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "931a4cbf3b51d3d2",
"name" : "反向用例-password过短",
"time" : {
"start" : 1704355352061,
"stop" : 1704355352154,
"duration" : 93
},
"status" : "passed",
"severity" : "normal"
} ]
\ No newline at end of file
[ {
"uid" : "2aab5dd53243513f",
"name" : "正向用例",
"time" : {
"start" : 1704355361967,
"stop" : 1704355362059,
"duration" : 92
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "9edb92b535bf068e",
"name" : "正向用例",
"time" : {
"start" : 1704355360439,
"stop" : 1704355360574,
"duration" : 135
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4b4a91fc89752c53",
"name" : "正向用例",
"time" : {
"start" : 1704355358194,
"stop" : 1704355358335,
"duration" : 141
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "52ae42406a7e865f",
"name" : "反向用例-username为空",
"time" : {
"start" : 1704355358711,
"stop" : 1704355358761,
"duration" : 50
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "8cf1715620386fe5",
"name" : "正向用例",
"time" : {
"start" : 1704355354412,
"stop" : 1704355354552,
"duration" : 140
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "bc6d8f7590db7da3",
"name" : "反向用例-password过短",
"time" : {
"start" : 1704355355906,
"stop" : 1704355355998,
"duration" : 92
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4b1f6fad29282c68",
"name" : "正向用例",
"time" : {
"start" : 1704355356583,
"stop" : 1704355356717,
"duration" : 134
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "9b721190eb52e5f8",
"name" : "正向用例-username和password正确",
"time" : {
"start" : 1704355350985,
"stop" : 1704355351040,
"duration" : 55
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "6ae273b5697e2fdd",
"name" : "反向用例-username过长",
"time" : {
"start" : 1704355351213,
"stop" : 1704355351304,
"duration" : 91
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "d1d4a2a8205e4c9b",
"name" : "正向用例",
"time" : {
"start" : 1704355358016,
"stop" : 1704355358081,
"duration" : 65
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "9646782da645fe29",
"name" : "反向用例-password过长",
"time" : {
"start" : 1704355355803,
"stop" : 1704355355897,
"duration" : 94
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4c9b03a5265c5f78",
"name" : "正向用例",
"time" : {
"start" : 1704355356511,
"stop" : 1704355356566,
"duration" : 55
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "a71899121005b7c9",
"name" : "正向用例",
"time" : {
"start" : 1704355357691,
"stop" : 1704355357864,
"duration" : 173
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "36fd79a4d6e8f295",
"name" : "反向用例-username错误",
"time" : {
"start" : 1704355351821,
"stop" : 1704355351877,
"duration" : 56
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "efd9d4bbfcb5bc27",
"name" : "反向用例-username过短",
"time" : {
"start" : 1704355358770,
"stop" : 1704355358861,
"duration" : 91
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "e2738a34fb1062f8",
"name" : "反向用例-username为特殊字符",
"time" : {
"start" : 1704355351315,
"stop" : 1704355351401,
"duration" : 86
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "99641fd344ed9b30",
"name" : "正向用例",
"time" : {
"start" : 1704355354169,
"stop" : 1704355354224,
"duration" : 55
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "e1b9eac85ad98e31",
"name" : "反向用例-password过长",
"time" : {
"start" : 1704355351956,
"stop" : 1704355352052,
"duration" : 96
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "3dabfc8bf0b027c5",
"name" : "正向用例",
"time" : {
"start" : 1704355357881,
"stop" : 1704355357941,
"duration" : 60
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "c7d78f8f23c410d0",
"name" : "正向用例-username和password正确",
"time" : {
"start" : 1704355354848,
"stop" : 1704355354900,
"duration" : 52
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "75cdf91df6fff1d1",
"name" : "反向用例-username过短",
"time" : {
"start" : 1704355351114,
"stop" : 1704355351204,
"duration" : 90
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "428b825a89583e",
"name" : "正向用例",
"time" : {
"start" : 1704355352750,
"stop" : 1704355352886,
"duration" : 136
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "e67b49c2340cf8a8",
"name" : "正向用例",
"time" : {
"start" : 1704355362068,
"stop" : 1704355362210,
"duration" : 142
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "d85f1d4520a8ecf7",
"name" : "反向用例-username为空",
"time" : {
"start" : 1704355351052,
"stop" : 1704355351104,
"duration" : 52
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "3864a5e70cd4a9b8",
"name" : "反向用例-username为空",
"time" : {
"start" : 1704355354909,
"stop" : 1704355354957,
"duration" : 48
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "abc618454b28f98c",
"name" : "正向用例",
"time" : {
"start" : 1704355354235,
"stop" : 1704355354293,
"duration" : 58
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "6430070a7396271b",
"name" : "正向用例",
"time" : {
"start" : 1704355361899,
"stop" : 1704355361958,
"duration" : 59
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "c8088967e0399600",
"name" : "正向用例-username和password正确",
"time" : {
"start" : 1704355358645,
"stop" : 1704355358701,
"duration" : 56
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "62b80f1be9202676",
"name" : "正向用例",
"time" : {
"start" : 1704355350576,
"stop" : 1704355350662,
"duration" : 86
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "f23bc22a67709133",
"name" : "反向用例-password过长",
"time" : {
"start" : 1704355359655,
"stop" : 1704355359749,
"duration" : 94
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "78c5744b444f5a95",
"name" : "反向用例-password为特殊字符",
"time" : {
"start" : 1704355356007,
"stop" : 1704355356103,
"duration" : 96
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "feec91ddfbcbf792",
"name" : "正向用例",
"time" : {
"start" : 1704355352679,
"stop" : 1704355352732,
"duration" : 53
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "ad441c3426b3d485",
"name" : "正向用例",
"time" : {
"start" : 1704355361835,
"stop" : 1704355361888,
"duration" : 53
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "7c0409d251df8e26",
"name" : "正向用例",
"time" : {
"start" : 1704355350671,
"stop" : 1704355350671,
"duration" : 0
},
"status" : "skipped",
"severity" : "normal"
}, {
"uid" : "1dc52fa4585ef704",
"name" : "正向用例",
"time" : {
"start" : 1704355357951,
"stop" : 1704355358007,
"duration" : 56
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4d3082647f787ce2",
"name" : "反向用例-username为特殊字符",
"time" : {
"start" : 1704355358976,
"stop" : 1704355359073,
"duration" : 97
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "aa3466af57b8aaaf",
"name" : "正向用例",
"time" : {
"start" : 1704355358092,
"stop" : 1704355358184,
"duration" : 92
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "fe2fc1e5b7dd8d5",
"name" : "反向用例-password为特殊字符",
"time" : {
"start" : 1704355352166,
"stop" : 1704355352262,
"duration" : 96
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "a59a20fc0ba77b0f",
"name" : "正向用例",
"time" : {
"start" : 1704355354308,
"stop" : 1704355354402,
"duration" : 94
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4a9ca7ab7b748e8",
"name" : "反向用例-password为空",
"time" : {
"start" : 1704355355742,
"stop" : 1704355355793,
"duration" : 51
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "57b66b4b905d32f9",
"name" : "反向用例-password为空",
"time" : {
"start" : 1704355351893,
"stop" : 1704355351943,
"duration" : 50
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "2c60d97c3d799cfc",
"name" : "正向用例",
"time" : {
"start" : 1704355361758,
"stop" : 1704355361816,
"duration" : 58
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "47a605f9b90c7cb7",
"name" : "反向用例-password为空",
"time" : {
"start" : 1704355359596,
"stop" : 1704355359647,
"duration" : 51
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "931a4cbf3b51d3d2",
"name" : "反向用例-password过短",
"time" : {
"start" : 1704355352061,
"stop" : 1704355352154,
"duration" : 93
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "de518c73ecae036",
"name" : "正向用例",
"time" : {
"start" : 1704355360369,
"stop" : 1704355360421,
"duration" : 52
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "a6583647569e5e2d",
"name" : "正向用例",
"time" : {
"start" : 1704355354102,
"stop" : 1704355354161,
"duration" : 59
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "d99f9f23e9ff60f9",
"name" : "正向用例",
"time" : {
"start" : 1704355349812,
"stop" : 1704355349909,
"duration" : 97
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "7866d6a7319272ac",
"name" : "正向用例",
"time" : {
"start" : 1704355353909,
"stop" : 1704355354085,
"duration" : 176
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "9f248808b7301343",
"name" : "反向用例-username为特殊字符",
"time" : {
"start" : 1704355355166,
"stop" : 1704355355254,
"duration" : 88
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "20e138f355c0ef13",
"name" : "反向用例-password为特殊字符",
"time" : {
"start" : 1704355359867,
"stop" : 1704355359961,
"duration" : 94
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "cc8a48a980c69ec",
"name" : "反向用例-password过短",
"time" : {
"start" : 1704355359759,
"stop" : 1704355359856,
"duration" : 97
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "6d75a984cf49a8e9",
"name" : "反向用例-username过短",
"time" : {
"start" : 1704355354966,
"stop" : 1704355355058,
"duration" : 92
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "46bb85a904e53e8c",
"name" : "反向用例-username错误",
"time" : {
"start" : 1704355359495,
"stop" : 1704355359549,
"duration" : 54
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "894e7ac623750b36",
"name" : "反向用例-username过长",
"time" : {
"start" : 1704355355069,
"stop" : 1704355355157,
"duration" : 88
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "2d2d31f7dc6e6125",
"name" : "反向用例-username错误",
"time" : {
"start" : 1704355355668,
"stop" : 1704355355727,
"duration" : 59
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "f034cb0300caa608",
"name" : "反向用例-username过长",
"time" : {
"start" : 1704355358870,
"stop" : 1704355358964,
"duration" : 94
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "ec4096a0ca542aa5",
"name" : "正向用例",
"time" : {
"start" : 1704355350674,
"stop" : 1704355350674,
"duration" : 0
},
"status" : "skipped",
"severity" : "normal"
}, {
"uid" : "6ba90e136be82101",
"name" : "正向用例",
"time" : {
"start" : 1704355361566,
"stop" : 1704355361741,
"duration" : 175
},
"status" : "failed",
"severity" : "normal"
} ]
\ No newline at end of file
{
"total" : 4,
"items" : [ {
"uid" : "08b0163bc8e7862ed550ea48da31e265",
"name" : "test_case.test_mr_wang",
"statistic" : {
"failed" : 3,
"broken" : 0,
"skipped" : 0,
"passed" : 15,
"unknown" : 0,
"total" : 18
}
}, {
"uid" : "adb94008864d198275a576c0eec6953c",
"name" : "test_case.test_mr_zhang",
"statistic" : {
"failed" : 3,
"broken" : 0,
"skipped" : 0,
"passed" : 15,
"unknown" : 0,
"total" : 18
}
}, {
"uid" : "12621601ad19e5d12295d7f3ca79a205",
"name" : "test_case.test_template",
"statistic" : {
"failed" : 3,
"broken" : 0,
"skipped" : 0,
"passed" : 15,
"unknown" : 0,
"total" : 18
}
}, {
"uid" : "e46a331c4511027a379c690c6217c7d5",
"name" : "test_case.test_dependecy_template",
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 2,
"passed" : 1,
"unknown" : 0,
"total" : 4
}
} ]
}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x00000146481B3FA0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x00000146483E2240>('message')\nE + where <built-in method get of dict object at 0x00000146483E2240> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w', 'userAttrs': {}, ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_zhang\\test_mr_zhang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x00000146481B3FA0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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_mr_zhang\\test_mr_zhang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "43d5a88f-3a31-4979-bafc-5a28e020b0be-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'刷新token'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'GET'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/refresh'"}, {"name": "case_mime", "value": "None"}, {"name": "case_data", "value": "None"}, {"name": "expect_data", "value": "{'message': '刷新成功'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355356112, "stop": 1704355356212, "uuid": "5c1c3586-722f-4893-98c7-299e4e96712c", "historyId": "7f952479ee2bf5bfa1e697e93b48b88e", "testCaseId": "f5214cfe7df9b72974e18e3d7310b5ff", "fullName": "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "刷新token"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老张"}, {"name": "parentSuite", "value": "test_case.test_mr_zhang"}, {"name": "suite", "value": "test_mr_zhang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_zhang.test_mr_zhang"}]}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"name": "反向用例-password过长", "status": "passed", "attachments": [{"name": "log", "source": "0665d44c-3533-4343-9191-f23c8cb5b380-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "a08cad1d-f3e4-4e62-96a3-398135dff8da-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-password过长'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355359655, "stop": 1704355359749, "uuid": "4a997c31-e2a5-4ac7-8c0c-f15bf8d8e58b", "historyId": "668a8e3f30e3e40742ca0446d2e2579a", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x00000146481B3FA0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x00000146484986C0>('message')\nE + where <built-in method get of dict object at 0x00000146484986C0> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w', 'userAttrs': {}, ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_zhang\\test_mr_zhang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x00000146481B3FA0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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_mr_zhang\\test_mr_zhang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "1e699db5-e337-4348-962f-9009d85feb7f-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'刷新token'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'GET'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/refresh'"}, {"name": "case_mime", "value": "None"}, {"name": "case_data", "value": "None"}, {"name": "expect_data", "value": "{'message': '刷新成功'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355356303, "stop": 1704355356358, "uuid": "cd4f9bca-6d1b-4e36-a530-45c1d82c0e6f", "historyId": "7f952479ee2bf5bfa1e697e93b48b88e", "testCaseId": "f5214cfe7df9b72974e18e3d7310b5ff", "fullName": "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "刷新token"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老张"}, {"name": "parentSuite", "value": "test_case.test_mr_zhang"}, {"name": "suite", "value": "test_mr_zhang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_zhang.test_mr_zhang"}]}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "d509af22-22d3-4c0f-99d4-ebe196802275", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355351603, "stop": 1704355351603}], "start": 1704355351603, "stop": 1704355351667}
\ No newline at end of file
{"uuid": "d892ab9e-ceec-4fc7-86dd-c6c0075c9f8d", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355353711, "stop": 1704355353711}], "start": 1704355353711, "stop": 1704355353901}
\ No newline at end of file
{"uuid": "97a2e69e-9e49-449e-a2c6-3054fb9e89d5", "befores": [{"name": "case_level", "status": "passed", "start": 1704355358975, "stop": 1704355358975}], "start": 1704355358975, "stop": 1704355359077}
\ No newline at end of file
{"uuid": "d2567a15-9409-4b5e-a438-75c38afa9f29", "befores": [{"name": "case_level", "status": "passed", "start": 1704355355598, "stop": 1704355355598}], "start": 1704355355598, "stop": 1704355355664}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTgsImlhdCI6MTcwNDM1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTgsImlhdCI6MTcwNDM1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTgsImlhdCI6MTcwNDM1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTgsImlhdCI6MTcwNDM1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTgsImlhdCI6MTcwNDM1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "751ae671-394f-42ec-bf76-fa50aaff6ff5", "befores": [{"name": "case_url", "status": "passed", "start": 1704355351674, "stop": 1704355351674}], "start": 1704355351674, "stop": 1704355351741}
\ No newline at end of file
{"uuid": "2b69f5b5-a241-45ff-ba7e-7c56da6ee3ab", "befores": [{"name": "update_key", "status": "passed", "start": 1704355356232, "stop": 1704355356232}], "start": 1704355356232, "stop": 1704355356293}
\ No newline at end of file
{"uuid": "c7d2e1da-a29b-48ba-a174-a04dd04bcf25", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355355668, "stop": 1704355355668}], "start": 1704355355668, "stop": 1704355355736}
\ No newline at end of file
{"uuid": "64749679-12bc-49c4-9109-246a66da9f0f", "befores": [{"name": "case_level", "status": "passed", "start": 1704355356511, "stop": 1704355356511}], "start": 1704355356511, "stop": 1704355356577}
\ No newline at end of file
{"uuid": "9f045325-3d75-41ea-9210-fd41d8fa6d4e", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355353908, "stop": 1704355353908}], "start": 1704355353908, "stop": 1704355354094}
\ No newline at end of file
{"uuid": "961d0907-9745-40bb-8216-e4707f325da7", "befores": [{"name": "case_title", "status": "passed", "start": 1704355359082, "stop": 1704355359082}], "start": 1704355359082, "stop": 1704355359193}
\ No newline at end of file
{"uuid": "9076f101-8d3e-41ba-8ddd-23b3f59ca7dd", "befores": [{"name": "module_name", "status": "passed", "start": 1704355350983, "stop": 1704355350983}], "start": 1704355350983, "stop": 1704355351047}
\ No newline at end of file
{"uuid": "e8b35598-2b19-49a8-b7cd-3ed83191e70e", "befores": [{"name": "case_level", "status": "passed", "start": 1704355361966, "stop": 1704355361966}], "start": 1704355361966, "stop": 1704355362063}
\ No newline at end of file
{"uuid": "35f7813d-b753-4d53-b652-1d708babd9bb", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355355668, "stop": 1704355355668}], "start": 1704355355668, "stop": 1704355355735}
\ No newline at end of file
{"uuid": "2804984e-2a75-4d7e-ae5d-f613608eb9b1", "befores": [{"name": "case_data", "status": "passed", "start": 1704355352281, "stop": 1704355352281}], "start": 1704355352281, "stop": 1704355352386}
\ No newline at end of file
{"uuid": "b2c346fd-abf9-46f3-8950-557d2384cd41", "befores": [{"name": "case_level", "status": "passed", "start": 1704355356374, "stop": 1704355356374}], "start": 1704355356374, "stop": 1704355356437}
\ No newline at end of file
{"uuid": "7e00a6ab-8fdb-40f6-8a09-b92c266c5c3f", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355360584, "stop": 1704355360585}], "start": 1704355360584, "stop": 1704355360784}
\ No newline at end of file
{"uuid": "8c0fac4d-ab83-44a8-8340-0088ff0221ea", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355357313, "stop": 1704355357313}], "start": 1704355357313, "stop": 1704355357496}
\ No newline at end of file
{"uuid": "c9dfef32-7292-4113-8542-0ade23520902", "befores": [{"name": "case_url", "status": "passed", "start": 1704355358644, "stop": 1704355358644}], "start": 1704355358644, "stop": 1704355358705}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "88c44272-b533-4de2-a08e-fe4e2a5d6e08-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "65a299d3-d386-47de-9621-73e8000aaea7-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'删除组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'post'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'"}, {"name": "case_mime", "value": "'text/plain'"}, {"name": "case_data", "value": "'test_58_org'"}, {"name": "expect_data", "value": "{'state': True, 'message': '删除组织成功!'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355358016, "stop": 1704355358081, "uuid": "bb07ec1c-6950-456b-9ba7-846748c6dae2", "historyId": "5cf09777cb8bfb0870c7462f3680ad17", "testCaseId": "f5214cfe7df9b72974e18e3d7310b5ff", "fullName": "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "删除组织"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老张"}, {"name": "parentSuite", "value": "test_case.test_mr_zhang"}, {"name": "suite", "value": "test_mr_zhang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_zhang.test_mr_zhang"}]}
\ No newline at end of file
{"uuid": "29c78241-8bd5-4f55-8422-7528b39d13df", "befores": [{"name": "update_key", "status": "passed", "start": 1704355356583, "stop": 1704355356583}], "start": 1704355356583, "stop": 1704355356718}
\ No newline at end of file
{'Authorization': 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NDgsImlhdCI6MTcwNDM1NTM0OH0.74lkX0v1gQKKnKXvut_3xcu6vl2HMiFHwyCFDWvJHr7rFSBPn6m-wEq7DDyy0pZWsEhy0X60v25Wkl0xRgBIfw'}
{'Authorization': 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NDgsImlhdCI6MTcwNDM1NTM0OH0.74lkX0v1gQKKnKXvut_3xcu6vl2HMiFHwyCFDWvJHr7rFSBPn6m-wEq7DDyy0pZWsEhy0X60v25Wkl0xRgBIfw'}
{'Authorization': 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NDgsImlhdCI6MTcwNDM1NTM0OH0.74lkX0v1gQKKnKXvut_3xcu6vl2HMiFHwyCFDWvJHr7rFSBPn6m-wEq7DDyy0pZWsEhy0X60v25Wkl0xRgBIfw'}
{'Authorization': 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NDgsImlhdCI6MTcwNDM1NTM0OH0.74lkX0v1gQKKnKXvut_3xcu6vl2HMiFHwyCFDWvJHr7rFSBPn6m-wEq7DDyy0pZWsEhy0X60v25Wkl0xRgBIfw'}
{'Authorization': 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NDgsImlhdCI6MTcwNDM1NTM0OH0.74lkX0v1gQKKnKXvut_3xcu6vl2HMiFHwyCFDWvJHr7rFSBPn6m-wEq7DDyy0pZWsEhy0X60v25Wkl0xRgBIfw'}
{'Authorization': 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NDgsImlhdCI6MTcwNDM1NTM0OH0.74lkX0v1gQKKnKXvut_3xcu6vl2HMiFHwyCFDWvJHr7rFSBPn6m-wEq7DDyy0pZWsEhy0X60v25Wkl0xRgBIfw'}
{"uuid": "51bf8257-1ca6-4b07-9d44-77736a12dae4", "befores": [{"name": "case_title", "status": "passed", "start": 1704355354234, "stop": 1704355354234}], "start": 1704355354234, "stop": 1704355354302}
\ No newline at end of file
{"uuid": "2ad1e07c-a711-4aca-abca-a4ef8dbf9cae", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355358016, "stop": 1704355358016}], "start": 1704355358016, "stop": 1704355358084}
\ No newline at end of file
{"uuid": "1d6043af-8ee7-41ba-8b70-82f4c213f7f1", "befores": [{"name": "case_url", "status": "passed", "start": 1704355362067, "stop": 1704355362067}], "start": 1704355362067, "stop": 1704355362216}
\ No newline at end of file
{"uuid": "50c85b76-d83e-4fa7-b4e6-16c454ad2dc4", "befores": [{"name": "case_level", "status": "passed", "start": 1704355352532, "stop": 1704355352532}], "start": 1704355352532, "stop": 1704355352599}
\ No newline at end of file
{"uuid": "5dd17b62-2c84-4dd2-9065-86cce1cc5c18", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355351602, "stop": 1704355351602}], "start": 1704355351602, "stop": 1704355351668}
\ No newline at end of file
{"uuid": "4e2d3a91-4d9b-4e4a-bc7e-0dcf23f6961e", "befores": [{"name": "case_level", "status": "passed", "start": 1704355354965, "stop": 1704355354965}], "start": 1704355354965, "stop": 1704355355062}
\ No newline at end of file
{"name": "反向用例-password为空", "status": "passed", "attachments": [{"name": "log", "source": "24711f40-2179-45b5-b916-ef3bf1d5b034-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "fa74abd1-793d-4e61-9828-4b0d6ca294ee-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-password为空'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': ''}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355355742, "stop": 1704355355793, "uuid": "8b884ee3-1860-424c-86c3-be095e0c2755", "historyId": "0db0eace66dc28efecaf226cfb3e82da", "testCaseId": "f5214cfe7df9b72974e18e3d7310b5ff", "fullName": "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM系统-老张"}, {"name": "parentSuite", "value": "test_case.test_mr_zhang"}, {"name": "suite", "value": "test_mr_zhang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_zhang.test_mr_zhang"}]}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "66e25454-422c-4c17-8066-9fea8501b7ff", "befores": [{"name": "case_req", "status": "passed", "start": 1704355355165, "stop": 1704355355165}], "start": 1704355355165, "stop": 1704355355257}
\ No newline at end of file
{"uuid": "4df96e46-551e-4db5-a3df-87a0dc1d6eed", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355359420, "stop": 1704355359420}], "start": 1704355359420, "stop": 1704355359487}
\ No newline at end of file
{"uuid": "aef5352b-8364-499c-ab84-ba5657f26616", "befores": [{"name": "api_name", "status": "passed", "start": 1704355356111, "stop": 1704355356111}], "start": 1704355356111, "stop": 1704355356228}
\ No newline at end of file
{"uuid": "d869a5d2-2f32-421e-9214-1194d7cdd66f", "befores": [{"name": "case_req", "status": "passed", "start": 1704355351819, "stop": 1704355351819}], "start": 1704355351819, "stop": 1704355351887}
\ No newline at end of file
{"uuid": "dbff35f0-7300-468d-90a8-cfb42cfb5be4", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355351528, "stop": 1704355351528}], "start": 1704355351528, "stop": 1704355351595}
\ No newline at end of file
{"uuid": "6a5b2435-7d33-4472-b9ba-58f5dc5faaef", "befores": [{"name": "case_data", "status": "passed", "start": 1704355362067, "stop": 1704355362067}], "start": 1704355362067, "stop": 1704355362215}
\ No newline at end of file
{"uuid": "4d55b0d5-3b9f-4136-845b-566f41511188", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355353908, "stop": 1704355353908}], "start": 1704355353908, "stop": 1704355354095}
\ No newline at end of file
{"uuid": "f33894d9-d4f2-4207-825f-a82339a99d8b", "befores": [{"name": "case_req", "status": "passed", "start": 1704355359595, "stop": 1704355359595}], "start": 1704355359595, "stop": 1704355359650}
\ No newline at end of file
{"uuid": "4869136a-41e5-4cff-9969-6c215c7847a3", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355354411, "stop": 1704355354411}], "start": 1704355354411, "stop": 1704355354554}
\ No newline at end of file
{"uuid": "dc3251d3-a446-489c-9243-23dfb64a74ad", "befores": [{"name": "case_title", "status": "passed", "start": 1704355362067, "stop": 1704355362067}], "start": 1704355362067, "stop": 1704355362217}
\ No newline at end of file
{"uuid": "aeaefe68-8df0-410b-8ba8-ec7bc71178f8", "befores": [{"name": "case_title", "status": "passed", "start": 1704355361898, "stop": 1704355361898}], "start": 1704355361898, "stop": 1704355361962}
\ No newline at end of file
{"uuid": "8cbc6223-26af-4fe3-9f36-f584fd75b417", "befores": [{"name": "case_data", "status": "passed", "start": 1704355356918, "stop": 1704355356918}], "start": 1704355356918, "stop": 1704355357108}
\ No newline at end of file
{"uuid": "45c0b2e6-9062-4c4b-94e6-9666137b142e", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355351052, "stop": 1704355351052}], "start": 1704355351052, "stop": 1704355351106}
\ No newline at end of file
{"uuid": "3eebcb0e-5f4d-487a-9971-81b30363d888", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355351528, "stop": 1704355351528}], "start": 1704355351528, "stop": 1704355351596}
\ No newline at end of file
{"uuid": "77018729-26b2-4673-9c0a-14fe911fcf57", "befores": [{"name": "case_data", "status": "passed", "start": 1704355355802, "stop": 1704355355802}], "start": 1704355355802, "stop": 1704355355899}
\ No newline at end of file
{"uuid": "022b8db7-f11a-4bb5-818a-e2919c2d3068", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355352605, "stop": 1704355352605}], "start": 1704355352605, "stop": 1704355352670}
\ No newline at end of file
{"uuid": "deadb8d0-7c32-4efc-9173-2accd57bb8a9", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355359655, "stop": 1704355359655}], "start": 1704355359655, "stop": 1704355359751}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x000001464820C2B0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_zhang\\test_mr_zhang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x000001464820C2B0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_zhang\\test_mr_zhang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "23474b23-a6bd-4f64-bd65-0c3b6c4b2075-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'添加组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'message': '添加组织成功'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"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": "update_key", "value": "'demId'"}], "start": 1704355357313, "stop": 1704355357487, "uuid": "550a122c-5514-4c48-9743-414d671ed887", "historyId": "9413f08791152b96a98cbf3a971b572a", "testCaseId": "f5214cfe7df9b72974e18e3d7310b5ff", "fullName": "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "添加组织"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老张"}, {"name": "parentSuite", "value": "test_case.test_mr_zhang"}, {"name": "suite", "value": "test_mr_zhang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_zhang.test_mr_zhang"}]}
\ No newline at end of file
{"uuid": "576145d2-2569-4ba3-9528-7522c1aa70b7", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355361371, "stop": 1704355361371}], "start": 1704355361371, "stop": 1704355361560}
\ No newline at end of file
{"uuid": "fef584c2-09d4-4cd9-ab27-811efe4955c3", "befores": [{"name": "case_data", "status": "passed", "start": 1704355359595, "stop": 1704355359595}], "start": 1704355359595, "stop": 1704355359649}
\ No newline at end of file
{"uuid": "7b88a5d6-6e39-4dbe-9c0a-9c08a2a6348f", "befores": [{"name": "case_level", "status": "passed", "start": 1704355351819, "stop": 1704355351819}], "start": 1704355351819, "stop": 1704355351887}
\ No newline at end of file
{"uuid": "c8f129fd-76a5-4993-b5d6-32a729c331d1", "befores": [{"name": "case_url", "status": "passed", "start": 1704355351745, "stop": 1704355351745}], "start": 1704355351745, "stop": 1704355351813}
\ No newline at end of file
{"uuid": "6e8dbccc-2db9-4add-bd32-55aa188d0d28", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355356302, "stop": 1704355356302}], "start": 1704355356302, "stop": 1704355356367}
\ No newline at end of file
{"uuid": "66db562f-c306-47bc-a254-70d73fd927d3", "befores": [{"name": "api_name", "status": "passed", "start": 1704355357690, "stop": 1704355357690}], "start": 1704355357690, "stop": 1704355357876}
\ No newline at end of file
{"uuid": "952042bd-ad3d-46e0-948f-4a1b0a957b0e", "befores": [{"name": "case_url", "status": "passed", "start": 1704355355453, "stop": 1704355355453}], "start": 1704355355453, "stop": 1704355355521}
\ No newline at end of file
{"uuid": "ab8832cb-3e51-41a4-8382-1d650e43528e", "befores": [{"name": "case_title", "status": "passed", "start": 1704355353315, "stop": 1704355353315}], "start": 1704355353315, "stop": 1704355353510}
\ No newline at end of file
{"uuid": "84617257-7198-4339-9fab-fe8f9bb6a428", "befores": [{"name": "case_data", "status": "passed", "start": 1704355360299, "stop": 1704355360299}], "start": 1704355360299, "stop": 1704355360363}
\ No newline at end of file
{"uuid": "c1d9c120-c06a-4172-825b-4c5e9d5674d0", "befores": [{"name": "module_name", "status": "passed", "start": 1704355361564, "stop": 1704355361564}], "start": 1704355361564, "stop": 1704355361754}
\ No newline at end of file
{"uuid": "9317d86c-24bc-4ad9-988d-e510beec71ff", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355359267, "stop": 1704355359267}], "start": 1704355359267, "stop": 1704355359338}
\ No newline at end of file
{"uuid": "656c5031-fe02-4573-b64b-919aa7a45617", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355359267, "stop": 1704355359267}], "start": 1704355359267, "stop": 1704355359337}
\ No newline at end of file
{"uuid": "98ea4422-b269-4299-b30f-1eafbeb228a0", "befores": [{"name": "case_data", "status": "passed", "start": 1704355360584, "stop": 1704355360584}], "start": 1704355360584, "stop": 1704355360784}
\ No newline at end of file
{"uuid": "4109c9d1-6641-487c-80de-501acfb7f983", "befores": [{"name": "api_name", "status": "passed", "start": 1704355361757, "stop": 1704355361757}], "start": 1704355361757, "stop": 1704355361820}
\ No newline at end of file
{"uuid": "d39e4ab1-60c5-4a00-92b1-8df854a2e176", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355360368, "stop": 1704355360368}], "start": 1704355360368, "stop": 1704355360430}
\ No newline at end of file
{"uuid": "fefb0791-3346-4cfd-844e-7262c0cf4f1b", "befores": [{"name": "api_name", "status": "passed", "start": 1704355361564, "stop": 1704355361564}], "start": 1704355361564, "stop": 1704355361754}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "8a383257-150b-44ad-84d2-19a86e0d9292-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "2f2f4cb6-4822-4fa5-bd5c-5c535443ddd8-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'根据维度编码删除维度'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'DELETE'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'"}, {"name": "case_mime", "value": "'query'"}, {"name": "case_data", "value": "{'ids': '需要更新'}"}, {"name": "expect_data", "value": "{'message': '删除维度成功!'}"}, {"name": "sql_type", "value": "'select'"}, {"name": "sql_data", "value": "'select ID_ from uc_demension WHERE `CODE_`=\"test58_dem_abc\";'"}, {"name": "update_key", "value": "'ids'"}], "start": 1704355361967, "stop": 1704355362059, "uuid": "6ad5b9b7-20fb-4a0f-8ce1-79f41b1c17c7", "historyId": "bd4554a034810ecae84139c70797361a", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "f4140571-78d9-495d-98c4-f86b6cb7b994", "befores": [{"name": "api_name", "status": "passed", "start": 1704355353711, "stop": 1704355353711}], "start": 1704355353711, "stop": 1704355353905}
\ No newline at end of file
{"uuid": "4fa58ec3-fa13-4e81-a5ef-52cb16dd33c0", "befores": [{"name": "case_req", "status": "passed", "start": 1704355359866, "stop": 1704355359866}], "start": 1704355359866, "stop": 1704355359965}
\ No newline at end of file
{"uuid": "ba0dbaf4-f48e-4794-831f-cb769034af4d", "children": ["26f2f2e4-0f0a-43c7-be6e-76414c69a3b1", "00c43855-ceb9-404a-9921-d8399ba2b840", "1250b974-1363-4976-94e6-c910d205b351", "94a260a5-1336-40a4-a9d2-9b73cf68fb94", "a5b04dbd-b602-47a6-b2ce-08663f5b21dc", "53be83bd-b7cf-4201-a058-ff594e4d1a9c", "0c0ff655-d3eb-468e-b7be-30a4c63cab83", "e26f1dc0-9664-4847-b9ec-26d1fe8676f4", "dcb4ba07-0d86-41db-a190-53bd37fdc7e0", "a9aa8348-0ee0-4f3c-8b32-5c8b62112ab3", "7f0a855a-f208-4def-a1aa-3b37c7641eab", "a843c43d-5a1f-4845-8d9d-34badaec1a3e", "18fc0fb5-22ab-483c-a809-7ea019542b69", "257e830f-8150-4abb-8040-b5ce44326177", "ee3235c6-dcce-4c22-ac01-df99576a0933", "b9109941-b377-4c7c-b101-82b47a87433f", "6d59e743-d609-45fd-a5b1-7dee05c18e7e", "5db6e610-2c8a-4d08-90d5-1367b76c4ce0", "fcd7e864-7486-4215-8aee-06e486d29b84", "89c1d692-7a75-47c6-86ae-8fc7858f5864", "de341067-bc1c-48d4-8f66-690db8e90086", "17aa2d52-e505-45ce-93da-8cbdda664fba", "4474f1d4-17ff-49a8-a3b0-6858f0585eb8", "4c8251e9-1c1f-4224-aede-048848bf2539", "f530c182-611c-43fb-a686-9a5e9935883f", "e9d6fa2d-f2d0-4349-831c-fd1e081fcae4", "b7e3db9b-864b-4348-b714-51df9d1bd859", "65d1f54a-907b-4962-a8b6-54d25beaaaef", "ccb332da-bcc0-40bc-891c-1893c0262d29", "a9ee748a-c68d-4f61-8c40-9df89365e0cb", "587fa80d-90f8-4e15-9f05-77ff1f800479", "40cb02fc-9bc7-49f4-9346-f3c5fd790bcb", "31ed0455-6ff9-41f1-91ce-69d220d1361e", "ff4bec4e-e0ea-43d8-9ae2-8911eef06d9e", "901211dc-484c-42ec-9b21-64b02c4def4e", "534fd1ea-2b7f-4862-8140-6c65a83657ab", "5d89b3e6-9ae7-4428-849d-6fc36c483130", "7b0f1a18-2018-4632-88b1-85f1ff101681", "4a9e8a1b-920e-4abb-b86a-3d050c85e194", "2470acd4-08c6-4d28-9f40-0dc17428b6fa", "ea4deb43-45e5-407d-a469-d676993d5963", "3df921c1-2f4a-42df-adac-04b779c0bc5f", "d3d2eabd-8786-4d9c-8974-775fecb6d8fa", "26954498-8375-4202-bb90-4bd90afd88dd", "215ca3be-bc25-45a0-b336-aa44f3fad525", "62053235-be7f-4e36-8f55-7bcc7a2cbba2", "ca0ca267-c150-4aaa-8cf7-b8c404f48ff6", "9c7f4f20-19da-4654-b228-48f9d184f13c", "6437c3c4-bd47-455e-bf55-ba0e26ccaedd", "1e644cd5-c355-439f-879e-91ecfe32b117", "c40eb1f1-bf60-4e55-ab22-217cd969095c", "ff2ae71f-e839-440e-b25c-0623dabae5d1", "96fa0951-34ab-4d11-b0f8-37047286d32a", "8b884ee3-1860-424c-86c3-be095e0c2755", "6b1c836c-cc5c-44ec-a418-451b2b412c44", "f8112179-362e-4544-8ffc-12bc9c569fab", "0ef0e593-64a9-4619-964b-24d135bb6639", "5c1c3586-722f-4893-98c7-299e4e96712c", "4684de86-87c6-404c-bee7-d1981c89ec3e", "cd4f9bca-6d1b-4e36-a530-45c1d82c0e6f", "2cc16b48-8334-40f9-b057-4c6835515c8a", "5fc88fbc-a06b-42e1-bc30-c805b300a479", "f0e415af-6125-44ad-997c-857aa642d882", "009acb33-b417-4d89-8aa9-c74831291c4c", "91216e22-b390-43fc-9ecd-fd519e9e1183", "beb15f91-b3a8-4c65-b880-55407833d23f", "e038c290-12dc-46b7-ac65-8c4851bd442c", "550a122c-5514-4c48-9743-414d671ed887", "7287d86c-cdf6-476f-8448-e22e7edacee0", "cd63cb3a-99a3-4a72-9a43-a86199226983", "a609960d-c024-462e-8c27-953e5cfbe97e", "15198dc9-4b43-40b6-a144-c397155ad609", "bb07ec1c-6950-456b-9ba7-846748c6dae2", "5b785b1b-3f7d-4a7c-ae94-756bc64cd20e", "57f1075e-d7b5-40a3-9ba8-0602b69f4ae4", "abbe7f22-2df3-4b15-bf9b-20ab76221c57", "519e1964-fbbf-4d4d-9a53-ddbfca411cdf", "281a0650-1b3b-4a6c-adcd-5d3f4b10660e", "3aad65d2-b978-402c-bbf4-173c981d873b", "a2246d3b-2ad1-43a0-a40b-c59bf03f62ba", "ae844c4b-2f87-43dd-b03f-fd90aee92a38", "553858e2-4a41-4adc-aecd-ae12a195ceb5", "1082359d-2b83-43e9-b5d8-edb963dcd20c", "7eefdea5-b0c0-4ab3-8fbb-3b0fd869c669", "ebb12334-3ef8-44bf-b425-8a59c773c90a", "8cd84ef2-3054-4e27-b37d-b99c856da4fd", "bd83a4c6-e046-4a70-b95f-bba1f8a5cfc7", "4a997c31-e2a5-4ac7-8c0c-f15bf8d8e58b", "c0562f96-1050-42f9-9999-abe866dc2a39", "8770e839-7802-4b17-a856-a30ef56de5fe", "6f83ce51-7bcd-438a-9ec5-408c9625e7ee", "1a99010a-df72-486d-9020-941c0c5bf4af", "fe4bee17-437e-489a-89fa-d8872f87ca4d", "76afca54-9341-409c-968b-c93143d1b3a6", "1f121a76-a372-413e-8891-b2d013dd076f", "5f1fc9e1-5ea1-4f94-9df7-a6e02aefa7ae", "519fae51-dfcb-470a-b297-d739afab29b5", "c36d3abf-b6d4-4c6e-936f-b1b584e379d1", "627a4eaf-a855-423f-8671-9d2620296fc8", "14256f5e-fcfb-46f4-9b5c-bbead63bc6b2", "e6c22a2c-624d-471d-abe1-bf553bc8d0f2", "a9a771f4-cd7f-4429-839a-479b4072ec02", "87258d33-72b7-46cb-b236-ed8931e02bcd", "fd60438c-7d36-4e75-a13c-5739288eac9e", "0ad9f600-15c7-4f15-85f8-18d73f81da9c", "b95fc09f-7e1f-4c34-970c-e2d8f7be9fe8", "6ad5b9b7-20fb-4a0f-8ce1-79f41b1c17c7", "4bfd5f40-1dfe-423c-8557-9ca26135b55c"], "befores": [{"name": "_session_faker", "status": "passed", "start": 1704355349682, "stop": 1704355349811}], "start": 1704355349682, "stop": 1704355362219}
\ No newline at end of file
{"uuid": "37cdf491-a240-40a2-9cfa-10b7278dc895", "befores": [{"name": "case_title", "status": "passed", "start": 1704355355802, "stop": 1704355355802}], "start": 1704355355802, "stop": 1704355355901}
\ No newline at end of file
{"uuid": "66b5d1e7-b6ef-4431-8c2b-a678b5fdbd17", "befores": [{"name": "case_req", "status": "passed", "start": 1704355359344, "stop": 1704355359344}], "start": 1704355359344, "stop": 1704355359414}
\ No newline at end of file
{"uuid": "14e8c994-d0d7-4831-93ef-13fcc319ffda", "befores": [{"name": "case_title", "status": "passed", "start": 1704355358769, "stop": 1704355358769}], "start": 1704355358769, "stop": 1704355358865}
\ No newline at end of file
{"uuid": "ae3ccd97-139e-4cfd-9c86-f52487189b52", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355355165, "stop": 1704355355165}], "start": 1704355355165, "stop": 1704355355255}
\ No newline at end of file
{"uuid": "019bee68-5ad9-45fa-af28-74533430c98a", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355352281, "stop": 1704355352281}], "start": 1704355352281, "stop": 1704355352386}
\ No newline at end of file
{"uuid": "fbf652f8-6532-4517-8730-945ae63c86b6", "befores": [{"name": "api_name", "status": "passed", "start": 1704355355741, "stop": 1704355355741}], "start": 1704355355741, "stop": 1704355355798}
\ No newline at end of file
{"name": "反向用例-username错误", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210400>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x00000146481A0080>('state')\nE + where <built-in method get of dict object at 0x00000146481A0080> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg', ...} = <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 0x0000014648210400>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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"}, "attachments": [{"name": "log", "source": "85ddd1a3-317f-4ee5-834a-08009dae0795-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username错误'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'Post'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'Admin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355359269, "stop": 1704355359323, "uuid": "1082359d-2b83-43e9-b5d8-edb963dcd20c", "historyId": "dfd4b38575c49a6fabc1cc90c1baa4fd", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "329cce41-a292-4cb2-9668-83c07bd1d946", "befores": [{"name": "case_data", "status": "passed", "start": 1704355361178, "stop": 1704355361178}], "start": 1704355361178, "stop": 1704355361365}
\ No newline at end of file
{"uuid": "8e29d3d0-b3f7-4468-9c6d-4612ccb05754", "befores": [{"name": "module_name", "status": "passed", "start": 1704355351602, "stop": 1704355351602}], "start": 1704355351602, "stop": 1704355351671}
\ No newline at end of file
{"uuid": "c8cb70a7-d2de-478f-a11f-f541bb9a7ddf", "befores": [{"name": "module_name", "status": "passed", "start": 1704355357500, "stop": 1704355357501}], "start": 1704355357500, "stop": 1704355357687}
\ No newline at end of file
{"uuid": "5d8f8cee-a8d8-4db4-bc74-cae59bb8da9f", "befores": [{"name": "case_title", "status": "passed", "start": 1704355361177, "stop": 1704355361177}], "start": 1704355361177, "stop": 1704355361367}
\ No newline at end of file
{"uuid": "47d2654f-d1bd-4b97-8c12-19d4a3f2880c", "befores": [{"name": "case_title", "status": "passed", "start": 1704355361371, "stop": 1704355361371}], "start": 1704355361371, "stop": 1704355361562}
\ No newline at end of file
{"uuid": "8809576e-6c85-4983-b603-a065c9db550d", "befores": [{"name": "case_title", "status": "passed", "start": 1704355355452, "stop": 1704355355452}], "start": 1704355355452, "stop": 1704355355523}
\ No newline at end of file
{"uuid": "87ed2513-d14c-4c7d-801b-0c039c267ef5", "befores": [{"name": "api_name", "status": "passed", "start": 1704355359267, "stop": 1704355359267}], "start": 1704355359267, "stop": 1704355359340}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "dc9d39cb-2e5b-43a0-8ad4-015bfe80e3e2", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355355906, "stop": 1704355355906}], "start": 1704355355906, "stop": 1704355355999}
\ No newline at end of file
{"uuid": "b2c28ce9-ae92-4a8d-a742-078109079cac", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355356729, "stop": 1704355356729}], "start": 1704355356729, "stop": 1704355356912}
\ No newline at end of file
{"uuid": "a99b4195-d832-4ac3-8974-b732cb555cb9", "befores": [{"name": "case_req", "status": "passed", "start": 1704355359197, "stop": 1704355359197}], "start": 1704355359197, "stop": 1704355359264}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "7ba7292b-12c6-4bee-96e5-982391f0756c", "befores": [{"name": "module_name", "status": "passed", "start": 1704355351112, "stop": 1704355351112}], "start": 1704355351112, "stop": 1704355351209}
\ No newline at end of file
{"uuid": "dad44210-e83e-4c23-92d6-f68655c601f2", "befores": [{"name": "update_key", "status": "passed", "start": 1704355362068, "stop": 1704355362068}], "start": 1704355362068, "stop": 1704355362210}
\ No newline at end of file
{"uuid": "6fc9b7fb-5663-4267-a25c-386b5a79ceff", "befores": [{"name": "case_level", "status": "passed", "start": 1704355354847, "stop": 1704355354847}], "start": 1704355354847, "stop": 1704355354903}
\ No newline at end of file
{"uuid": "b67fe830-12f6-4360-8bbd-01e2188f41dc", "befores": [{"name": "case_url", "status": "passed", "start": 1704355355668, "stop": 1704355355668}], "start": 1704355355668, "stop": 1704355355737}
\ No newline at end of file
{"uuid": "a3efdbc3-4d96-4712-950e-75b285b1c5be", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355360222, "stop": 1704355360222}], "start": 1704355360222, "stop": 1704355360292}
\ No newline at end of file
{"name": "反向用例-username错误", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x00000146481BD970>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x00000146483965C0>('state')\nE + where <built-in method get of dict object at 0x00000146483965C0> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...MsImlhdCI6MTcwNDM1NTM1M30.iIqaIOC216iH_yvZSAPlt1gw_EQ4v_y9KyH8b1ptKn4i44OHQ5oDvteaHEjrLkfvKfqf3CrYotXQkRoryaguZA', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...MsImlhdCI6MTcwNDM1NTM1M30.iIqaIOC216iH_yvZSAPlt1gw_EQ4v_y9KyH8b1ptKn4i44OHQ5oDvteaHEjrLkfvKfqf3CrYotXQkRoryaguZA', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_zhang\\test_mr_zhang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x00000146481BD970>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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_mr_zhang\\test_mr_zhang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "84e0c5fb-90aa-447a-9992-735588ec0abb-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username错误'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'Post'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'Admin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355355454, "stop": 1704355355510, "uuid": "1e644cd5-c355-439f-879e-91ecfe32b117", "historyId": "39b12c49be6a4cf5dc4e214d57da103d", "testCaseId": "f5214cfe7df9b72974e18e3d7310b5ff", "fullName": "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM系统-老张"}, {"name": "parentSuite", "value": "test_case.test_mr_zhang"}, {"name": "suite", "value": "test_mr_zhang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_zhang.test_mr_zhang"}]}
\ No newline at end of file
{"uuid": "7d58507d-ca67-4500-b9ec-4da578817db2", "befores": [{"name": "api_name", "status": "passed", "start": 1704355358193, "stop": 1704355358193}], "start": 1704355358193, "stop": 1704355358341}
\ No newline at end of file
{"uuid": "c53e6865-eec7-49ad-9eef-5be637103937", "befores": [{"name": "api_name", "status": "passed", "start": 1704355355597, "stop": 1704355355598}], "start": 1704355355597, "stop": 1704355355664}
\ No newline at end of file
{"name": "反向用例-username为空", "status": "passed", "attachments": [{"name": "log", "source": "275b06a9-9886-4d7e-b2a7-9771683af9bb-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "c9201b02-14f3-458a-a536-01b4d5d84563-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username为空'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': '', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355358711, "stop": 1704355358761, "uuid": "519e1964-fbbf-4d4d-9a53-ddbfca411cdf", "historyId": "429f6958d2a8507a4d0888c495ec43c9", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "aea78164-4995-4743-99d5-56300b08277f", "befores": [{"name": "case_data", "status": "passed", "start": 1704355360982, "stop": 1704355360982}], "start": 1704355360982, "stop": 1704355361171}
\ No newline at end of file
{"uuid": "97ad4327-db19-467a-a1ed-1f22f1a656ba", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355359758, "stop": 1704355359758}], "start": 1704355359758, "stop": 1704355359858}
\ No newline at end of file
{"uuid": "ef192b33-e6f8-4cac-b45a-1e4f311f7e4c", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355355068, "stop": 1704355355068}], "start": 1704355355068, "stop": 1704355355158}
\ No newline at end of file
{"uuid": "2b314954-6e31-4283-a9a5-95c0524eca75", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355352900, "stop": 1704355352900}], "start": 1704355352900, "stop": 1704355353093}
\ No newline at end of file
{"uuid": "ab4dab37-cb9b-4c6c-833e-df6db0553361", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355353711, "stop": 1704355353711}], "start": 1704355353711, "stop": 1704355353903}
\ No newline at end of file
{"uuid": "41a19506-a58d-447c-b4a9-bfd02e21c58c", "befores": [{"name": "api_name", "status": "passed", "start": 1704355360150, "stop": 1704355360150}], "start": 1704355360150, "stop": 1704355360219}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "a63d2adf-784e-41ee-a1e2-cf062c93fcbf", "befores": [{"name": "api_name", "status": "passed", "start": 1704355352749, "stop": 1704355352749}], "start": 1704355352749, "stop": 1704355352893}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTAsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTAsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTAsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTAsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTAsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "06abe6a6-90bb-4bfb-a5f0-8f76f494079a", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355353711, "stop": 1704355353711}], "start": 1704355353711, "stop": 1704355353901}
\ No newline at end of file
{"uuid": "f83d5b01-3408-4c35-96be-c7990ef27857", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355353514, "stop": 1704355353514}], "start": 1704355353514, "stop": 1704355353701}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTQsImlhdCI6MTcwNDM1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTQsImlhdCI6MTcwNDM1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTQsImlhdCI6MTcwNDM1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "43060715-c10a-4778-a4f4-38d8d2e268bb", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355357950, "stop": 1704355357950}], "start": 1704355357950, "stop": 1704355358008}
\ No newline at end of file
{"uuid": "c0ca0881-90ec-4622-9b27-ea3eade1526c", "befores": [{"name": "case_req", "status": "passed", "start": 1704355361966, "stop": 1704355361966}], "start": 1704355361966, "stop": 1704355362063}
\ No newline at end of file
{"uuid": "ae5503fe-ebe7-4ccc-bd67-47fd488166d1", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355358194, "stop": 1704355358194}], "start": 1704355358194, "stop": 1704355358336}
\ No newline at end of file
{"uuid": "9ab74668-1bc0-4cbb-9a12-f9ba4f3ab1ef", "befores": [{"name": "case_req", "status": "passed", "start": 1704355356441, "stop": 1704355356441}], "start": 1704355356441, "stop": 1704355356506}
\ No newline at end of file
{"uuid": "d2bae5e7-ae30-4d7d-b39a-edea40009d66", "befores": [{"name": "case_data", "status": "passed", "start": 1704355354411, "stop": 1704355354411}], "start": 1704355354411, "stop": 1704355354554}
\ No newline at end of file
{"uuid": "19fc972d-dc27-4475-9dd9-c54b89350a1c", "befores": [{"name": "update_key", "status": "passed", "start": 1704355358976, "stop": 1704355358976}], "start": 1704355358976, "stop": 1704355359073}
\ No newline at end of file
{"uuid": "9411c0c0-ec6a-403f-b01f-8395d026b53a", "befores": [{"name": "case_data", "status": "passed", "start": 1704355359758, "stop": 1704355359758}], "start": 1704355359758, "stop": 1704355359859}
\ No newline at end of file
{"uuid": "b42f555c-7dde-4a0a-a6fa-3c3f31bbcd51", "befores": [{"name": "case_req", "status": "passed", "start": 1704355360584, "stop": 1704355360584}], "start": 1704355360584, "stop": 1704355360785}
\ No newline at end of file
{"uuid": "eff31d2e-1644-4a0b-b377-8b9eaf33d10e", "befores": [{"name": "case_data", "status": "passed", "start": 1704355352605, "stop": 1704355352605}], "start": 1704355352605, "stop": 1704355352671}
\ No newline at end of file
{"uuid": "11fcbc1e-ab0b-4548-ad37-7c261da1b4cf", "befores": [{"name": "case_url", "status": "passed", "start": 1704355355598, "stop": 1704355355598}], "start": 1704355355598, "stop": 1704355355662}
\ No newline at end of file
{"uuid": "7131e67d-9e2f-4e6a-b7d7-9f8e21610cff", "befores": [{"name": "update_key", "status": "passed", "start": 1704355361835, "stop": 1704355361835}], "start": 1704355361835, "stop": 1704355361889}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "25c1ad10-e6d2-4572-93d0-1767272c4196", "befores": [{"name": "case_url", "status": "passed", "start": 1704355355526, "stop": 1704355355526}], "start": 1704355355526, "stop": 1704355355592}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F2220>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F2220>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_wang\\test_mr_wang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "a9ebf000-2c7f-4c5e-a1cb-f14a8ce8bc88-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'添加组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'code': 'test_58_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'message': '添加组织成功'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"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": "update_key", "value": "'demId'"}], "start": 1704355352901, "stop": 1704355353081, "uuid": "40cb02fc-9bc7-49f4-9346-f3c5fd790bcb", "historyId": "613ba371a5db8527b11f6809098d080c", "testCaseId": "f2fe01aec482200ae6914516b7a8fbd5", "fullName": "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "添加组织"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老王"}, {"name": "parentSuite", "value": "test_case.test_mr_wang"}, {"name": "suite", "value": "test_mr_wang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_wang.test_mr_wang"}]}
\ No newline at end of file
{"uuid": "3e88ec24-3cca-4e93-8f0a-00b6d1b7b5b6", "befores": [{"name": "case_level", "status": "passed", "start": 1704355361898, "stop": 1704355361898}], "start": 1704355361898, "stop": 1704355361961}
\ No newline at end of file
{"uuid": "95225225-a20e-4e11-96e0-a6ace9c5c0aa", "befores": [{"name": "case_req", "status": "passed", "start": 1704355352749, "stop": 1704355352749}], "start": 1704355352749, "stop": 1704355352891}
\ No newline at end of file
{"uuid": "f62291cd-3b51-4551-9482-c0408936536f", "befores": [{"name": "api_name", "status": "passed", "start": 1704355354908, "stop": 1704355354908}], "start": 1704355354908, "stop": 1704355354961}
\ No newline at end of file
{"uuid": "fce7fe04-c64a-4038-ad30-2b46599cdcea", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355351674, "stop": 1704355351674}], "start": 1704355351674, "stop": 1704355351740}
\ No newline at end of file
{"uuid": "247ce4bd-d188-4383-baac-c22a50ae4b83", "befores": [{"name": "module_name", "status": "passed", "start": 1704355352281, "stop": 1704355352281}], "start": 1704355352281, "stop": 1704355352389}
\ No newline at end of file
{"uuid": "73ef377a-52b7-438e-860a-77624ba621b0", "befores": [{"name": "api_name", "status": "passed", "start": 1704355351892, "stop": 1704355351892}], "start": 1704355351892, "stop": 1704355351951}
\ No newline at end of file
{"uuid": "92c99510-50c1-4df5-9e3e-09fcfc5ed379", "befores": [{"name": "update_key", "status": "passed", "start": 1704355361966, "stop": 1704355361966}], "start": 1704355361966, "stop": 1704355362059}
\ No newline at end of file
{"uuid": "97c4de26-cc55-4d89-b8c5-59329c39906b", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355352463, "stop": 1704355352463}], "start": 1704355352463, "stop": 1704355352526}
\ No newline at end of file
{"uuid": "611fd46a-8328-4260-ba87-c5d1c64be8f6", "befores": [{"name": "update_key", "status": "passed", "start": 1704355351746, "stop": 1704355351746}], "start": 1704355351746, "stop": 1704355351811}
\ No newline at end of file
{"uuid": "d54b3d9a-af32-4654-ad17-efebb5de0b3f", "befores": [{"name": "case_level", "status": "passed", "start": 1704355352678, "stop": 1704355352678}], "start": 1704355352678, "stop": 1704355352742}
\ No newline at end of file
{"uuid": "3eaecb8e-006c-480d-9c95-f1dbfa35e33d", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355358870, "stop": 1704355358870}], "start": 1704355358870, "stop": 1704355358966}
\ No newline at end of file
{"name": "反向用例-password为空", "status": "passed", "attachments": [{"name": "log", "source": "c7be9fda-f5a8-4c44-a226-f5454417d2d3-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "6337a189-3593-459b-af70-b32fde17f765-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-password为空'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': ''}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355359596, "stop": 1704355359647, "uuid": "bd83a4c6-e046-4a70-b95f-bba1f8a5cfc7", "historyId": "83fc972a3ddb35b80ad97af4a03157c7", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F2220>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F2220>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_wang\\test_mr_wang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "508d9aaa-7a74-4c49-af38-2608ee3ceb0d-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'添加组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'message': '添加组织成功'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"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": "update_key", "value": "'demId'"}], "start": 1704355353711, "stop": 1704355353892, "uuid": "534fd1ea-2b7f-4862-8140-6c65a83657ab", "historyId": "613ba371a5db8527b11f6809098d080c", "testCaseId": "f2fe01aec482200ae6914516b7a8fbd5", "fullName": "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "添加组织"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老王"}, {"name": "parentSuite", "value": "test_case.test_mr_wang"}, {"name": "suite", "value": "test_mr_wang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_wang.test_mr_wang"}]}
\ No newline at end of file
{"uuid": "e1331cfb-dfa7-4b98-8fa6-d1f62501ffe4", "befores": [{"name": "update_key", "status": "passed", "start": 1704355352605, "stop": 1704355352605}], "start": 1704355352605, "stop": 1704355352669}
\ No newline at end of file
{"uuid": "f7f15da2-869e-4518-b8f6-9860cdd5316b", "befores": [{"name": "case_title", "status": "passed", "start": 1704355351674, "stop": 1704355351674}], "start": 1704355351674, "stop": 1704355351742}
\ No newline at end of file
{"uuid": "3c7e8919-b9e1-45f2-b67b-308d82e1bffc", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355353514, "stop": 1704355353514}], "start": 1704355353514, "stop": 1704355353704}
\ No newline at end of file
{"uuid": "11487fa3-cfd3-4519-a003-0301fea2258a", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355354234, "stop": 1704355354234}], "start": 1704355354234, "stop": 1704355354300}
\ No newline at end of file
{"uuid": "7fea993b-04af-4f4f-88cd-5ff44c1dede3", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355354307, "stop": 1704355354307}], "start": 1704355354307, "stop": 1704355354404}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "c8260441-a7d8-45a8-8c5e-849cac49f237", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355359197, "stop": 1704355359197}], "start": 1704355359197, "stop": 1704355359260}
\ No newline at end of file
{"uuid": "851eab3b-9a6a-4b65-b705-60e9e6b824d1", "befores": [{"name": "case_data", "status": "passed", "start": 1704355361834, "stop": 1704355361834}], "start": 1704355361834, "stop": 1704355361891}
\ No newline at end of file
{"uuid": "f486dcbd-91dc-49c8-bcdd-fc18c2678357", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355360584, "stop": 1704355360584}], "start": 1704355360584, "stop": 1704355360784}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "fe4ba006-0bef-4b84-8f9c-9ec801eb5082", "befores": [{"name": "case_title", "status": "passed", "start": 1704355356006, "stop": 1704355356006}], "start": 1704355356006, "stop": 1704355356107}
\ No newline at end of file
{"uuid": "4424d7c4-9f78-41b6-8f34-6a69a1ed8827", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355357501, "stop": 1704355357501}], "start": 1704355357501, "stop": 1704355357683}
\ No newline at end of file
{"uuid": "eae0a3e5-a1e4-4c3b-89dc-6c1c086c0949", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355351052, "stop": 1704355351052}], "start": 1704355351052, "stop": 1704355351106}
\ No newline at end of file
{"uuid": "82409f90-5b23-4dcf-a0f6-214e763ef726", "befores": [{"name": "case_level", "status": "passed", "start": 1704355359494, "stop": 1704355359494}], "start": 1704355359494, "stop": 1704355359589}
\ No newline at end of file
{"uuid": "7b9894ee-4852-4cf6-9ad3-0a146fcde01e", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355360983, "stop": 1704355360983}], "start": 1704355360983, "stop": 1704355361171}
\ No newline at end of file
{"uuid": "c63c1037-cee5-4ed0-a2ef-70891bf1547b", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355352749, "stop": 1704355352749}], "start": 1704355352749, "stop": 1704355352889}
\ No newline at end of file
{"uuid": "e736c340-eac9-4452-9ea8-d4c76e98026f", "befores": [{"name": "case_data", "status": "passed", "start": 1704355359420, "stop": 1704355359420}], "start": 1704355359420, "stop": 1704355359487}
\ No newline at end of file
{"uuid": "85e9e8f4-3f1f-45a5-a81a-62cd826022fe", "befores": [{"name": "api_name", "status": "passed", "start": 1704355351527, "stop": 1704355351527}], "start": 1704355351527, "stop": 1704355351598}
\ No newline at end of file
{"uuid": "8efa30d0-f5f6-4eab-b530-9a2565d70d4d", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355352463, "stop": 1704355352463}], "start": 1704355352463, "stop": 1704355352526}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "13e3f806-9ca8-481f-96c3-5820cac728d5", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355352605, "stop": 1704355352605}], "start": 1704355352605, "stop": 1704355352670}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F2220>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F2220>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_wang\\test_mr_wang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "a1c3418a-64e1-4fca-9b41-a9f16fb5185a-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'添加组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'message': '添加组织成功'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"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": "update_key", "value": "'demId'"}], "start": 1704355353316, "stop": 1704355353499, "uuid": "ff4bec4e-e0ea-43d8-9ae2-8911eef06d9e", "historyId": "613ba371a5db8527b11f6809098d080c", "testCaseId": "f2fe01aec482200ae6914516b7a8fbd5", "fullName": "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "添加组织"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老王"}, {"name": "parentSuite", "value": "test_case.test_mr_wang"}, {"name": "suite", "value": "test_mr_wang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_wang.test_mr_wang"}]}
\ No newline at end of file
{"name": "反向用例-username为特殊字符", "status": "passed", "attachments": [{"name": "log", "source": "8efd016d-7551-4259-8cf9-97bfb3db39c8-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "12673b89-7dda-47a1-ad70-0583d599f9ed-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username为特殊字符'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': '♠♣▣▤▥▦▩◘◙◈', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355351315, "stop": 1704355351401, "uuid": "257e830f-8150-4abb-8040-b5ce44326177", "historyId": "5d98543074058e754e3e6c9788aaa828", "testCaseId": "f2fe01aec482200ae6914516b7a8fbd5", "fullName": "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM系统-老王"}, {"name": "parentSuite", "value": "test_case.test_mr_wang"}, {"name": "suite", "value": "test_mr_wang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_wang.test_mr_wang"}]}
\ No newline at end of file
{"uuid": "74870fce-9a8c-46a0-850d-137e5b907a30", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355356511, "stop": 1704355356511}], "start": 1704355356511, "stop": 1704355356575}
\ No newline at end of file
{"uuid": "c40c8839-72c6-4284-8909-dcceefb6cca1", "befores": [{"name": "module_name", "status": "passed", "start": 1704355358644, "stop": 1704355358644}], "start": 1704355358644, "stop": 1704355358706}
\ No newline at end of file
{"uuid": "2f9be877-1b81-46f4-adaa-c0a9f5f9d540", "befores": [{"name": "module_name", "status": "passed", "start": 1704355351411, "stop": 1704355351411}], "start": 1704355351411, "stop": 1704355351524}
\ No newline at end of file
{"uuid": "881115a7-56a5-41c0-a952-14a4fb4a52c1", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355361371, "stop": 1704355361371}], "start": 1704355361371, "stop": 1704355361559}
\ No newline at end of file
{"uuid": "70f67e9f-6414-45e6-9d3a-f795e75570e2", "befores": [{"name": "case_url", "status": "passed", "start": 1704355351892, "stop": 1704355351892}], "start": 1704355351892, "stop": 1704355351949}
\ No newline at end of file
{"uuid": "acf227a6-ebfb-48b1-b09a-1fca2e28e658", "befores": [{"name": "update_key", "status": "passed", "start": 1704355351315, "stop": 1704355351315}], "start": 1704355351315, "stop": 1704355351402}
\ No newline at end of file
{"uuid": "c0ea441c-586a-4502-8d06-0227177f47ca", "befores": [{"name": "api_name", "status": "passed", "start": 1704355356729, "stop": 1704355356729}], "start": 1704355356729, "stop": 1704355356915}
\ No newline at end of file
{"uuid": "fb7521ba-f979-479d-b7c5-5c73d8a34e84", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355360299, "stop": 1704355360299}], "start": 1704355360299, "stop": 1704355360361}
\ No newline at end of file
{"uuid": "e14d494a-0131-4404-9866-8795ce182984", "befores": [{"name": "case_url", "status": "passed", "start": 1704355359758, "stop": 1704355359758}], "start": 1704355359758, "stop": 1704355359860}
\ No newline at end of file
{"uuid": "2837edfb-d1e5-423a-9a6b-10b60b6eaebb", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355354169, "stop": 1704355354169}], "start": 1704355354169, "stop": 1704355354227}
\ No newline at end of file
{"uuid": "31951ae8-d3f1-4a09-a09b-240fe844b3a7", "befores": [{"name": "update_key", "status": "passed", "start": 1704355361178, "stop": 1704355361178}], "start": 1704355361178, "stop": 1704355361363}
\ No newline at end of file
{"uuid": "ecdb6dbf-9c95-4510-a89a-96a6af65d294", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355355668, "stop": 1704355355668}], "start": 1704355355668, "stop": 1704355355735}
\ No newline at end of file
{"uuid": "c88f8307-a645-46fb-b614-74dd80d5063d", "befores": [{"name": "case_data", "status": "passed", "start": 1704355355068, "stop": 1704355355068}], "start": 1704355355068, "stop": 1704355355159}
\ No newline at end of file
{"uuid": "cc60cfbc-c477-48bc-ae94-270cfcb9c084", "befores": [{"name": "update_key", "status": "passed", "start": 1704355353711, "stop": 1704355353711}], "start": 1704355353711, "stop": 1704355353900}
\ No newline at end of file
{"uuid": "2ef668da-8cee-4fc0-9f83-40ae3b19ad81", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355355906, "stop": 1704355355906}], "start": 1704355355906, "stop": 1704355356001}
\ No newline at end of file
{"uuid": "6103acf6-7e64-49b8-96ec-83c44c4125cd", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355356232, "stop": 1704355356232}], "start": 1704355356232, "stop": 1704355356294}
\ No newline at end of file
{"uuid": "c4b4dbb2-6e78-49d5-8a2f-5a452bd484eb", "befores": [{"name": "case_level", "status": "passed", "start": 1704355351212, "stop": 1704355351212}], "start": 1704355351212, "stop": 1704355351309}
\ No newline at end of file
{"uuid": "dd98571e-ddce-4d77-bf9d-14ec67baa6f0", "befores": [{"name": "case_data", "status": "passed", "start": 1704355352165, "stop": 1704355352165}], "start": 1704355352165, "stop": 1704355352263}
\ No newline at end of file
{"uuid": "5bec66cf-4c74-4671-971e-bda15cde249d", "befores": [{"name": "case_title", "status": "passed", "start": 1704355354307, "stop": 1704355354307}], "start": 1704355354307, "stop": 1704355354407}
\ No newline at end of file
{"uuid": "52b3c314-1a0a-4211-8ce1-88e70f4af117", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355351412, "stop": 1704355351412}], "start": 1704355351412, "stop": 1704355351520}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x00000146482105E0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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 0x00000146482105E0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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"}, "attachments": [{"name": "log", "source": "6b61ee93-bb6c-4f69-8bd5-7c097b61955c-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'添加组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'message': '添加组织成功'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"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": "update_key", "value": "'demId'"}], "start": 1704355360792, "stop": 1704355360969, "uuid": "627a4eaf-a855-423f-8671-9d2620296fc8", "historyId": "ece10c98bbcc6add49fa944897380ee5", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "902a8e6c-26e3-48f8-b0dd-ffe1580a077a", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355356007, "stop": 1704355356007}], "start": 1704355356006, "stop": 1704355356106}
\ No newline at end of file
{"uuid": "0ff91624-4d01-4cb0-9919-0e111b2200ae", "befores": [{"name": "update_key", "status": "passed", "start": 1704355361565, "stop": 1704355361565}], "start": 1704355361565, "stop": 1704355361749}
\ No newline at end of file
{"uuid": "b7bb8112-10ac-49bd-aeec-bcd26e5613aa", "befores": [{"name": "api_name", "status": "passed", "start": 1704355353315, "stop": 1704355353315}], "start": 1704355353315, "stop": 1704355353511}
\ No newline at end of file
{"uuid": "3461682d-57ee-4515-9f4b-ecf35780f336", "befores": [{"name": "case_level", "status": "passed", "start": 1704355360438, "stop": 1704355360438}], "start": 1704355360438, "stop": 1704355360578}
\ No newline at end of file
{"uuid": "4a694b25-8aea-411b-a7fa-85b5b3fe3b0f", "befores": [{"name": "api_name", "status": "passed", "start": 1704355354101, "stop": 1704355354101}], "start": 1704355354101, "stop": 1704355354165}
\ No newline at end of file
{"uuid": "e8c46ab9-9d3b-4539-9f79-1dd60dd6bb51", "befores": [{"name": "case_level", "status": "passed", "start": 1704355360982, "stop": 1704355360982}], "start": 1704355360982, "stop": 1704355361174}
\ No newline at end of file
{"name": "反向用例-password过长", "status": "passed", "attachments": [{"name": "log", "source": "8b1f4243-deac-4749-86eb-ff48048d9969-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "04aece90-458e-41f1-a14f-b8512810e138-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-password过长'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355355803, "stop": 1704355355897, "uuid": "6b1c836c-cc5c-44ec-a418-451b2b412c44", "historyId": "dbc7fb1b1ee58909cb607253c698adcf", "testCaseId": "f5214cfe7df9b72974e18e3d7310b5ff", "fullName": "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM系统-老张"}, {"name": "parentSuite", "value": "test_case.test_mr_zhang"}, {"name": "suite", "value": "test_mr_zhang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_zhang.test_mr_zhang"}]}
\ No newline at end of file
{"name": "正向用例", "status": "skipped", "statusDetails": {"message": "Skipped: test3[4-5-6] depends on TestDependency::test_add_demo", "trace": "('D:\\\\Document\\\\PythonDoc\\\\test_58\\\\venv\\\\lib\\\\site-packages\\\\pytest_dependency.py', 101, 'Skipped: test3[4-5-6] depends on TestDependency::test_add_demo')"}, "attachments": [{"name": "log", "source": "3fb7ab24-7219-49c5-8996-e0b00ec13f72-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "a", "value": "4"}, {"name": "b", "value": "5"}, {"name": "c", "value": "6"}], "start": 1704355350674, "stop": 1704355350674, "uuid": "dcb4ba07-0d86-41db-a190-53bd37fdc7e0", "historyId": "455987a44c5b38bba06bf0a34630bf2f", "testCaseId": "5e076d25e03de247ef30b4703b3c56a5", "fullName": "test_case.test_dependecy_template.test_dependecy_template.TestDependency#test3", "labels": [{"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统依赖"}, {"name": "story", "value": "测试参数化"}, {"name": "feature", "value": "测试模块"}, {"name": "tag", "value": "dependency(depends=['TestDependency::test_login', 'TestDependency::test_add_demo'])"}, {"name": "parentSuite", "value": "test_case.test_dependecy_template"}, {"name": "suite", "value": "test_dependecy_template"}, {"name": "subSuite", "value": "TestDependency"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_dependecy_template.test_dependecy_template"}]}
\ No newline at end of file
{"uuid": "df52772a-bac6-41af-a377-b8e9a9daae88", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355351745, "stop": 1704355351745}], "start": 1704355351745, "stop": 1704355351812}
\ No newline at end of file
{"uuid": "8ae2c3a7-7b58-43fa-930e-f3a146089d08", "befores": [{"name": "case_title", "status": "passed", "start": 1704355360438, "stop": 1704355360438}], "start": 1704355360438, "stop": 1704355360579}
\ No newline at end of file
{"uuid": "6a0948ca-7284-48f5-8468-cd22a1700dd8", "befores": [{"name": "update_key", "status": "passed", "start": 1704355359970, "stop": 1704355359970}], "start": 1704355359970, "stop": 1704355360071}
\ No newline at end of file
{"uuid": "5809c2b3-641f-40f1-8096-43dd458c6f8c", "befores": [{"name": "update_key", "status": "passed", "start": 1704355351213, "stop": 1704355351213}], "start": 1704355351213, "stop": 1704355351304}
\ No newline at end of file
{"uuid": "5cec893e-7264-40f4-b01f-cc71ac1758ce", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355358015, "stop": 1704355358015}], "start": 1704355358015, "stop": 1704355358084}
\ No newline at end of file
{"uuid": "6464985d-1629-4a70-88be-2cbe0ac02b1d", "befores": [{"name": "api_name", "status": "passed", "start": 1704355351745, "stop": 1704355351745}], "start": 1704355351745, "stop": 1704355351816}
\ No newline at end of file
{"uuid": "16f35a27-6e26-4c67-a22e-00e7f7250a4f", "befores": [{"name": "case_data", "status": "passed", "start": 1704355357313, "stop": 1704355357313}], "start": 1704355357313, "stop": 1704355357496}
\ No newline at end of file
{"name": "正向用例", "status": "skipped", "statusDetails": {"message": "Skipped: test3[1-2-3] depends on TestDependency::test_add_demo", "trace": "('D:\\\\Document\\\\PythonDoc\\\\test_58\\\\venv\\\\lib\\\\site-packages\\\\pytest_dependency.py', 101, 'Skipped: test3[1-2-3] depends on TestDependency::test_add_demo')"}, "attachments": [{"name": "log", "source": "ca1124cc-8e82-4c25-ada3-4fec6fb14c1e-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "a", "value": "1"}, {"name": "b", "value": "2"}, {"name": "c", "value": "3"}], "start": 1704355350671, "stop": 1704355350671, "uuid": "e26f1dc0-9664-4847-b9ec-26d1fe8676f4", "historyId": "e069d9c8b9e4a64fb0719c7df1215034", "testCaseId": "5e076d25e03de247ef30b4703b3c56a5", "fullName": "test_case.test_dependecy_template.test_dependecy_template.TestDependency#test3", "labels": [{"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统依赖"}, {"name": "story", "value": "测试参数化"}, {"name": "feature", "value": "测试模块"}, {"name": "tag", "value": "dependency(depends=['TestDependency::test_login', 'TestDependency::test_add_demo'])"}, {"name": "parentSuite", "value": "test_case.test_dependecy_template"}, {"name": "suite", "value": "test_dependecy_template"}, {"name": "subSuite", "value": "TestDependency"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_dependecy_template.test_dependecy_template"}]}
\ No newline at end of file
{"uuid": "77ab99e1-b286-40e4-a57b-4cf18802c931", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355355803, "stop": 1704355355803}], "start": 1704355355803, "stop": 1704355355898}
\ No newline at end of file
{"uuid": "a5354c00-4264-4564-ad57-e8f963b151df", "befores": [{"name": "update_key", "status": "passed", "start": 1704355359867, "stop": 1704355359867}], "start": 1704355359867, "stop": 1704355359961}
\ No newline at end of file
{"uuid": "2676a5a8-9040-48f2-a190-8eaf0645b308", "befores": [{"name": "case_title", "status": "passed", "start": 1704355356582, "stop": 1704355356582}], "start": 1704355356582, "stop": 1704355356725}
\ No newline at end of file
{"uuid": "9c7e87e1-4097-4bd3-a0f8-d3e8c972c498", "befores": [{"name": "case_url", "status": "passed", "start": 1704355357950, "stop": 1704355357950}], "start": 1704355357950, "stop": 1704355358010}
\ No newline at end of file
{"uuid": "6a42e808-9584-4683-a061-3849adc2abfe", "befores": [{"name": "case_title", "status": "passed", "start": 1704355356372, "stop": 1704355356374}], "start": 1704355356372, "stop": 1704355356437}
\ No newline at end of file
{"uuid": "9047a918-0f70-4ff7-a93c-fd7d3e4782f7", "befores": [{"name": "api_name", "status": "passed", "start": 1704355352604, "stop": 1704355352604}], "start": 1704355352604, "stop": 1704355352674}
\ No newline at end of file
{"uuid": "21d8047f-b903-4fb2-9365-1d9ea3e64d71", "befores": [{"name": "update_key", "status": "passed", "start": 1704355355165, "stop": 1704355355165}], "start": 1704355355165, "stop": 1704355355254}
\ No newline at end of file
{"uuid": "8bb18a94-87ef-4a36-873b-0f53ef8ea7d0", "befores": [{"name": "api_name", "status": "passed", "start": 1704355359866, "stop": 1704355359866}], "start": 1704355359866, "stop": 1704355359965}
\ No newline at end of file
{"uuid": "76eda9ec-63ae-4ed6-b046-c962050da6cc", "befores": [{"name": "case_req", "status": "passed", "start": 1704355356232, "stop": 1704355356232}], "start": 1704355356232, "stop": 1704355356297}
\ No newline at end of file
{"uuid": "1bda924a-f887-4a00-8857-0aee9029ac6b", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355356918, "stop": 1704355356919}], "start": 1704355356918, "stop": 1704355357106}
\ No newline at end of file
{"uuid": "610b1015-9b40-47c5-8e34-16762facd429", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355357880, "stop": 1704355357880}], "start": 1704355357880, "stop": 1704355357944}
\ No newline at end of file
{"uuid": "f78fd6a7-1e95-490c-b365-2beb657afd8f", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355359595, "stop": 1704355359595}], "start": 1704355359595, "stop": 1704355359648}
\ No newline at end of file
{"uuid": "2485ddd3-2e90-4a3c-bfc4-53e0bcf23c67", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355355526, "stop": 1704355355526}], "start": 1704355355526, "stop": 1704355355590}
\ No newline at end of file
{"uuid": "c4c93cf2-0d24-4407-a57b-a8b72ab3a419", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355355598, "stop": 1704355355598}], "start": 1704355355598, "stop": 1704355355662}
\ No newline at end of file
{"uuid": "7a6f0e1e-cc50-407d-8ebe-8bfb6eb2a395", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355355526, "stop": 1704355355526}], "start": 1704355355526, "stop": 1704355355591}
\ No newline at end of file
{"uuid": "393d3d8c-7a7c-4539-85b2-96bf5aa7bb9c", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355351955, "stop": 1704355351955}], "start": 1704355351955, "stop": 1704355352053}
\ No newline at end of file
{"uuid": "88f2f5e3-94d8-4f90-88e8-98ddbdeeaad0", "befores": [{"name": "module_name", "status": "passed", "start": 1704355351051, "stop": 1704355351051}], "start": 1704355351051, "stop": 1704355351109}
\ No newline at end of file
{"uuid": "d8a6b0b7-139c-4e9b-aaa7-f833ab0d176e", "befores": [{"name": "api_name", "status": "passed", "start": 1704355355263, "stop": 1704355355263}], "start": 1704355355263, "stop": 1704355355374}
\ No newline at end of file
{"uuid": "bab2d667-8b07-417c-b93f-83f2aefb5e7a", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355359420, "stop": 1704355359420}], "start": 1704355359420, "stop": 1704355359486}
\ No newline at end of file
{"uuid": "fefac41e-794b-458f-a905-0da2d2f3e1e0", "befores": [{"name": "case_data", "status": "passed", "start": 1704355350984, "stop": 1704355350984}], "start": 1704355350984, "stop": 1704355351043}
\ No newline at end of file
{"uuid": "7342b009-102f-406b-800e-472ebffef99c", "befores": [{"name": "case_req", "status": "passed", "start": 1704355351411, "stop": 1704355351411}], "start": 1704355351411, "stop": 1704355351523}
\ No newline at end of file
{"name": "反向用例-username错误", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x00000146481BD970>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x000001464846B480>('state')\nE + where <built-in method get of dict object at 0x000001464846B480> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...MsImlhdCI6MTcwNDM1NTM1M30.iIqaIOC216iH_yvZSAPlt1gw_EQ4v_y9KyH8b1ptKn4i44OHQ5oDvteaHEjrLkfvKfqf3CrYotXQkRoryaguZA', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...MsImlhdCI6MTcwNDM1NTM1M30.iIqaIOC216iH_yvZSAPlt1gw_EQ4v_y9KyH8b1ptKn4i44OHQ5oDvteaHEjrLkfvKfqf3CrYotXQkRoryaguZA', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_zhang\\test_mr_zhang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x00000146481BD970>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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_mr_zhang\\test_mr_zhang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "402d456d-9a5f-44f2-9b08-ae3c2b31d0ea-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username错误'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'Post'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'Admin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355355599, "stop": 1704355355653, "uuid": "ff2ae71f-e839-440e-b25c-0623dabae5d1", "historyId": "39b12c49be6a4cf5dc4e214d57da103d", "testCaseId": "f5214cfe7df9b72974e18e3d7310b5ff", "fullName": "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM系统-老张"}, {"name": "parentSuite", "value": "test_case.test_mr_zhang"}, {"name": "suite", "value": "test_mr_zhang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_zhang.test_mr_zhang"}]}
\ No newline at end of file
{"uuid": "ef038d5a-da3b-428a-b0da-78c527f54cd0", "befores": [{"name": "api_name", "status": "passed", "start": 1704355352281, "stop": 1704355352281}], "start": 1704355352281, "stop": 1704355352389}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "41913c69-f087-41ca-a3e8-3ade68582103", "befores": [{"name": "case_level", "status": "passed", "start": 1704355355068, "stop": 1704355355068}], "start": 1704355355068, "stop": 1704355355160}
\ No newline at end of file
{"uuid": "d1a40d98-8fba-4e93-8c3d-558ab309db7b", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355357113, "stop": 1704355357113}], "start": 1704355357113, "stop": 1704355357304}
\ No newline at end of file
{"uuid": "4a15f3c9-b40b-42ba-b6b0-a44fc2c37a7f", "befores": [{"name": "case_level", "status": "passed", "start": 1704355354168, "stop": 1704355354168}], "start": 1704355354168, "stop": 1704355354228}
\ No newline at end of file
{"uuid": "fe4f6865-3241-4e4a-9a99-d5e863e98246", "befores": [{"name": "update_key", "status": "passed", "start": 1704355355263, "stop": 1704355355263}], "start": 1704355355263, "stop": 1704355355370}
\ No newline at end of file
{"uuid": "4735197b-e166-4eef-bc85-39847f081071", "befores": [{"name": "case_req", "status": "passed", "start": 1704355359082, "stop": 1704355359082}], "start": 1704355359082, "stop": 1704355359192}
\ No newline at end of file
{"uuid": "19921f20-697d-49d5-8a3a-e7ff7856b6f6", "befores": [{"name": "module_name", "status": "passed", "start": 1704355358193, "stop": 1704355358193}], "start": 1704355358193, "stop": 1704355358341}
\ No newline at end of file
{"uuid": "3559e4c6-858e-484d-b934-3f612b3c7df0", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355359420, "stop": 1704355359420}], "start": 1704355359420, "stop": 1704355359487}
\ No newline at end of file
{"uuid": "475857ca-10e2-423f-8f37-d67ce8388ec4", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355360585, "stop": 1704355360585}], "start": 1704355360585, "stop": 1704355360783}
\ No newline at end of file
{"uuid": "f40b3072-6015-47cb-9552-0773ce445ac6", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355358091, "stop": 1704355358091}], "start": 1704355358091, "stop": 1704355358187}
\ No newline at end of file
{"uuid": "78ebdcb2-1dd8-4b7c-86e2-01f380e4faa5", "befores": [{"name": "case_req", "status": "passed", "start": 1704355357880, "stop": 1704355357880}], "start": 1704355357880, "stop": 1704355357945}
\ No newline at end of file
{"uuid": "6b254d6f-0ca9-402a-8ab5-845b492b3f45", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355361178, "stop": 1704355361178}], "start": 1704355361178, "stop": 1704355361364}
\ No newline at end of file
{"uuid": "8a9b14c1-8f94-4930-b161-4e0c1e649558", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355352061, "stop": 1704355352061}], "start": 1704355352061, "stop": 1704355352155}
\ No newline at end of file
{"uuid": "4793bfe7-948b-4888-9cc4-c4b241c8580e", "befores": [{"name": "update_key", "status": "passed", "start": 1704355352463, "stop": 1704355352463}], "start": 1704355352463, "stop": 1704355352524}
\ No newline at end of file
{"uuid": "fc5ae31a-be48-46d5-b8b7-2dff5aaa7b77", "befores": [{"name": "case_level", "status": "passed", "start": 1704355355905, "stop": 1704355355905}], "start": 1704355355905, "stop": 1704355356002}
\ No newline at end of file
{"uuid": "840c1991-5265-40f3-b8f4-e1ad5b2e6203", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355354411, "stop": 1704355354411}], "start": 1704355354411, "stop": 1704355354554}
\ No newline at end of file
{"uuid": "82c0225e-5a56-47c1-8c42-b99d36842b2b", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355358769, "stop": 1704355358769}], "start": 1704355358769, "stop": 1704355358862}
\ No newline at end of file
{"name": "反向用例-password过短", "status": "passed", "attachments": [{"name": "log", "source": "88487f30-75bb-4fed-8544-6eb98bd050e6-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "31c0aad4-559a-4133-961e-6bbbe3e3788e-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-password过短'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'm'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355355906, "stop": 1704355355998, "uuid": "f8112179-362e-4544-8ffc-12bc9c569fab", "historyId": "b6ce04cc30587adda64f0f4fae297021", "testCaseId": "f5214cfe7df9b72974e18e3d7310b5ff", "fullName": "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM系统-老张"}, {"name": "parentSuite", "value": "test_case.test_mr_zhang"}, {"name": "suite", "value": "test_mr_zhang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_zhang.test_mr_zhang"}]}
\ No newline at end of file
{"uuid": "0fe07410-b232-456c-8072-5589021a1b2a", "befores": [{"name": "module_name", "status": "passed", "start": 1704355360584, "stop": 1704355360584}], "start": 1704355360584, "stop": 1704355360787}
\ No newline at end of file
{"uuid": "244da504-d31d-4971-9f7d-f970c6fea013", "befores": [{"name": "module_name", "status": "passed", "start": 1704355356372, "stop": 1704355356372}], "start": 1704355356372, "stop": 1704355356438}
\ No newline at end of file
{"uuid": "4b8dc398-c8d6-4b63-9880-059783272691", "befores": [{"name": "case_title", "status": "passed", "start": 1704355356111, "stop": 1704355356111}], "start": 1704355356111, "stop": 1704355356227}
\ No newline at end of file
{"uuid": "236b5abd-fc4a-414b-9c22-667bcb6c3b81", "befores": [{"name": "case_url", "status": "passed", "start": 1704355360584, "stop": 1704355360584}], "start": 1704355360584, "stop": 1704355360785}
\ No newline at end of file
{"uuid": "d98336ff-2bb6-4635-b668-ac3652a28095", "befores": [{"name": "case_data", "status": "passed", "start": 1704355352678, "stop": 1704355352678}], "start": 1704355352678, "stop": 1704355352741}
\ No newline at end of file
{"uuid": "b0e27eea-3a7c-42fc-ad1f-ff62e9aa9dec", "befores": [{"name": "case_title", "status": "passed", "start": 1704355359655, "stop": 1704355359655}], "start": 1704355359655, "stop": 1704355359753}
\ No newline at end of file
{"uuid": "7804011b-8bbd-4d5d-841d-9ce9606899df", "befores": [{"name": "case_title", "status": "passed", "start": 1704355359494, "stop": 1704355359494}], "start": 1704355359494, "stop": 1704355359590}
\ No newline at end of file
{"uuid": "1572483b-0104-44cd-921e-75682f6af976", "befores": [{"name": "api_name", "status": "passed", "start": 1704355353513, "stop": 1704355353513}], "start": 1704355353513, "stop": 1704355353706}
\ No newline at end of file
{"uuid": "74e7fe2e-aaeb-4d9a-8624-5938cd18c833", "befores": [{"name": "case_req", "status": "passed", "start": 1704355358644, "stop": 1704355358644}], "start": 1704355358644, "stop": 1704355358705}
\ No newline at end of file
{"uuid": "22520a32-4507-4853-ae51-f174d483750b", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355355378, "stop": 1704355355378}], "start": 1704355355378, "stop": 1704355355446}
\ No newline at end of file
{"uuid": "4da7dce0-6c90-44bb-80fe-daab3e92aeb5", "befores": [{"name": "case_data", "status": "passed", "start": 1704355360150, "stop": 1704355360150}], "start": 1704355360150, "stop": 1704355360217}
\ No newline at end of file
{"uuid": "1cff5143-e875-4415-aabf-093dd85e8d06", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355360078, "stop": 1704355360078}], "start": 1704355360078, "stop": 1704355360140}
\ No newline at end of file
{"uuid": "86255f96-29ec-4588-a494-3235ed31c847", "befores": [{"name": "case_title", "status": "passed", "start": 1704355360222, "stop": 1704355360222}], "start": 1704355360222, "stop": 1704355360295}
\ No newline at end of file
{"uuid": "0b037813-e003-41e8-918c-f0812827aa62", "befores": [{"name": "case_data", "status": "passed", "start": 1704355355263, "stop": 1704355355263}], "start": 1704355355263, "stop": 1704355355372}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "f88de226-6a75-4462-b94d-63ef18108e9b", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355357113, "stop": 1704355357113}], "start": 1704355357113, "stop": 1704355357305}
\ No newline at end of file
{"uuid": "6e8a0034-50b2-42e6-b08f-ff579d7978a6", "befores": [{"name": "case_title", "status": "passed", "start": 1704355353513, "stop": 1704355353513}], "start": 1704355353513, "stop": 1704355353706}
\ No newline at end of file
{"uuid": "cea706a2-5d3e-462d-9101-f321b4eb38e4", "befores": [{"name": "case_req", "status": "passed", "start": 1704355351528, "stop": 1704355351528}], "start": 1704355351528, "stop": 1704355351597}
\ No newline at end of file
{"uuid": "a1ac78da-417a-4c8b-920e-32820f6e9e61", "befores": [{"name": "case_level", "status": "passed", "start": 1704355357950, "stop": 1704355357950}], "start": 1704355357950, "stop": 1704355358010}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "741cc52f-6061-4ac7-876d-05563d36b80c", "befores": [{"name": "module_name", "status": "passed", "start": 1704355354168, "stop": 1704355354168}], "start": 1704355354168, "stop": 1704355354230}
\ No newline at end of file
{"uuid": "a7e751b0-ded5-405a-8c6c-086694594f4e", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355351745, "stop": 1704355351745}], "start": 1704355351745, "stop": 1704355351812}
\ No newline at end of file
{"uuid": "42cafcba-402e-4464-ada7-ecf185eaf9a2", "befores": [{"name": "case_title", "status": "passed", "start": 1704355355598, "stop": 1704355355598}], "start": 1704355355598, "stop": 1704355355664}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTgsImlhdCI6MTcwNDM1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTgsImlhdCI6MTcwNDM1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTgsImlhdCI6MTcwNDM1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTgsImlhdCI6MTcwNDM1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "d6adcf20-41a5-4ced-a027-95d9233e7eee", "befores": [{"name": "module_name", "status": "passed", "start": 1704355356510, "stop": 1704355356511}], "start": 1704355356510, "stop": 1704355356579}
\ No newline at end of file
{"uuid": "ad4239c6-e53b-4006-8fe9-61f0a69e2997", "befores": [{"name": "api_name", "status": "passed", "start": 1704355352462, "stop": 1704355352462}], "start": 1704355352462, "stop": 1704355352528}
\ No newline at end of file
{"uuid": "355ce53b-bbf9-49d5-a3c7-a14a17eaabec", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355354411, "stop": 1704355354411}], "start": 1704355354411, "stop": 1704355354553}
\ No newline at end of file
{"uuid": "04b783c8-3795-4595-afff-13c7c98c003a", "befores": [{"name": "api_name", "status": "passed", "start": 1704355357112, "stop": 1704355357112}], "start": 1704355357112, "stop": 1704355357308}
\ No newline at end of file
{"uuid": "df7d29f2-7730-49fc-b4ea-6dcceffe38b4", "befores": [{"name": "case_req", "status": "passed", "start": 1704355351314, "stop": 1704355351315}], "start": 1704355351314, "stop": 1704355351405}
\ No newline at end of file
{"uuid": "47e4bf0d-e9f1-45ad-8189-c97e4358ebc8", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355357313, "stop": 1704355357313}], "start": 1704355357313, "stop": 1704355357496}
\ No newline at end of file
{"uuid": "463e0c92-3929-44d8-8050-d9f257997115", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355355378, "stop": 1704355355378}], "start": 1704355355378, "stop": 1704355355447}
\ No newline at end of file
{"uuid": "2b7a7159-9cb7-4784-8f92-103256cf771d", "befores": [{"name": "case_title", "status": "passed", "start": 1704355351954, "stop": 1704355351954}], "start": 1704355351954, "stop": 1704355352057}
\ No newline at end of file
{"uuid": "3c631d8e-cd31-444e-b020-60e87ae0717b", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355351528, "stop": 1704355351528}], "start": 1704355351528, "stop": 1704355351594}
\ No newline at end of file
{"uuid": "918028e7-dd08-4dc7-9bad-73c9d8f4df27", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355355453, "stop": 1704355355453}], "start": 1704355355453, "stop": 1704355355520}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x0000014648220940>('message')\nE + where <built-in method get of dict object at 0x0000014648220940> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...} = <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 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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"}, "attachments": [{"name": "log", "source": "476d8499-1807-47e7-a831-ab4a76ffbe98-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'刷新token'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'GET'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/refresh'"}, {"name": "case_mime", "value": "None"}, {"name": "case_data", "value": "None"}, {"name": "expect_data", "value": "{'message': '刷新成功'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355359970, "stop": 1704355360064, "uuid": "6f83ce51-7bcd-438a-9ec5-408c9625e7ee", "historyId": "8a137f95ba4a68bf446ff9343a1271df", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "刷新token"}, {"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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "778fa0dd-05fe-467f-a66b-190d3ee1a301", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355359494, "stop": 1704355359494}], "start": 1704355359494, "stop": 1704355359575}
\ No newline at end of file
{"uuid": "461b13fd-16de-43ee-837c-1d8fd74915c7", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355361966, "stop": 1704355361966}], "start": 1704355361966, "stop": 1704355362061}
\ No newline at end of file
{"uuid": "6ce5ec1f-c1b8-4eda-bab5-1b469cab0009", "befores": [{"name": "update_key", "status": "passed", "start": 1704355356302, "stop": 1704355356302}], "start": 1704355356302, "stop": 1704355356366}
\ No newline at end of file
{"uuid": "38c17ffd-491c-473d-8d01-0cd58b5c403e", "befores": [{"name": "case_title", "status": "passed", "start": 1704355359969, "stop": 1704355359969}], "start": 1704355359969, "stop": 1704355360074}
\ No newline at end of file
{"uuid": "da497b53-e1eb-4066-99d7-eccf28cd7d89", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355355906, "stop": 1704355355906}], "start": 1704355355906, "stop": 1704355356000}
\ No newline at end of file
{"name": "反向用例-username错误", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210400>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x00000146484CC200>('state')\nE + where <built-in method get of dict object at 0x00000146484CC200> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg', ...} = <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 0x0000014648210400>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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"}, "attachments": [{"name": "log", "source": "fe2ed9ff-ecd5-4195-9c9c-45e8d69dba81-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username错误'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'Post'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'Admin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355359083, "stop": 1704355359180, "uuid": "ae844c4b-2f87-43dd-b03f-fd90aee92a38", "historyId": "dfd4b38575c49a6fabc1cc90c1baa4fd", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "fc44da28-89da-4736-a729-cdeaae451262", "befores": [{"name": "case_url", "status": "passed", "start": 1704355354168, "stop": 1704355354168}], "start": 1704355354168, "stop": 1704355354228}
\ No newline at end of file
{"uuid": "9e17b2bb-d905-46d2-9fe8-94ea5ff0c991", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355358091, "stop": 1704355358091}], "start": 1704355358091, "stop": 1704355358186}
\ No newline at end of file
{"uuid": "ecf17653-8630-43b5-857a-16e62a37565f", "befores": [{"name": "update_key", "status": "passed", "start": 1704355361758, "stop": 1704355361758}], "start": 1704355361758, "stop": 1704355361816}
\ No newline at end of file
{"uuid": "41c184ae-4640-45c6-9445-0560ee68cd83", "befores": [{"name": "api_name", "status": "passed", "start": 1704355356582, "stop": 1704355356582}], "start": 1704355356582, "stop": 1704355356725}
\ No newline at end of file
{"uuid": "d4fd0aff-afdc-4c51-9efb-2f37314630e7", "befores": [{"name": "module_name", "status": "passed", "start": 1704355355263, "stop": 1704355355263}], "start": 1704355355263, "stop": 1704355355375}
\ No newline at end of file
{"uuid": "7f52bede-9bef-4d6f-bb20-db23ed82e010", "befores": [{"name": "case_url", "status": "passed", "start": 1704355356112, "stop": 1704355356112}], "start": 1704355356112, "stop": 1704355356226}
\ No newline at end of file
{"uuid": "a2f2217f-d962-4e91-89b1-b02b58e3ba34", "befores": [{"name": "case_data", "status": "passed", "start": 1704355353109, "stop": 1704355353109}], "start": 1704355353109, "stop": 1704355353309}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "d154fac0-46a0-46e8-bfd3-b6dbbb055c8f", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355355742, "stop": 1704355355742}], "start": 1704355355742, "stop": 1704355355795}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "92b86f50-9db2-4041-8755-8a228b7ddfca-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "4e58e9e5-0d7b-43b9-8451-a5c47eff5d67-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'添加维度'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'code': 'test58_dem_abc', 'description': '测试维度-58', 'isDefault': 0, 'name': '测试维度-58'}"}, {"name": "expect_data", "value": "{'message': '添加维度成功!'}"}, {"name": "sql_type", "value": "'delete'"}, {"name": "sql_data", "value": "' delete from uc_demension WHERE `CODE_`=\"test58_dem_abc\";'"}, {"name": "update_key", "value": "None"}], "start": 1704355360439, "stop": 1704355360574, "uuid": "519fae51-dfcb-470a-b297-d739afab29b5", "historyId": "8ecb6669ef6b8289662aed579ea2616b", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "c2ebdccd-e228-44d2-a4c0-cd93fe71b490", "befores": [{"name": "case_url", "status": "passed", "start": 1704355354847, "stop": 1704355354847}], "start": 1704355354847, "stop": 1704355354903}
\ No newline at end of file
{"uuid": "572804ff-094e-4ae3-9b98-94aa64d2c8fe", "befores": [{"name": "case_url", "status": "passed", "start": 1704355359267, "stop": 1704355359267}], "start": 1704355359267, "stop": 1704355359339}
\ No newline at end of file
{"uuid": "204c4e75-9648-436e-9890-e1c40f2aa345", "befores": [{"name": "update_key", "status": "passed", "start": 1704355360150, "stop": 1704355360150}], "start": 1704355360150, "stop": 1704355360215}
\ No newline at end of file
{"uuid": "4597fb53-0282-4a1e-811f-2a7ea9c13e71", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355360078, "stop": 1704355360078}], "start": 1704355360078, "stop": 1704355360143}
\ No newline at end of file
{"uuid": "8d58bc92-6c5a-4d8c-925b-c49da46bb63b", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355354966, "stop": 1704355354966}], "start": 1704355354966, "stop": 1704355355060}
\ No newline at end of file
INFO  pytest_dependency:pytest_dependency.py:100 skip test3[4-5-6] because it depends on TestDependency::test_add_demo
\ No newline at end of file
{"uuid": "bd773210-f5dc-47bd-b48b-ac4bb5d69365", "befores": [{"name": "module_name", "status": "passed", "start": 1704355358768, "stop": 1704355358768}], "start": 1704355358768, "stop": 1704355358866}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTMsImlhdCI6MTcwNDM1NTM1M30.iIqaIOC216iH_yvZSAPlt1gw_EQ4v_y9KyH8b1ptKn4i44OHQ5oDvteaHEjrLkfvKfqf3CrYotXQkRoryaguZA","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTMsImlhdCI6MTcwNDM1NTM1M30.iIqaIOC216iH_yvZSAPlt1gw_EQ4v_y9KyH8b1ptKn4i44OHQ5oDvteaHEjrLkfvKfqf3CrYotXQkRoryaguZA","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTMsImlhdCI6MTcwNDM1NTM1M30.iIqaIOC216iH_yvZSAPlt1gw_EQ4v_y9KyH8b1ptKn4i44OHQ5oDvteaHEjrLkfvKfqf3CrYotXQkRoryaguZA","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTMsImlhdCI6MTcwNDM1NTM1M30.iIqaIOC216iH_yvZSAPlt1gw_EQ4v_y9KyH8b1ptKn4i44OHQ5oDvteaHEjrLkfvKfqf3CrYotXQkRoryaguZA","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTMsImlhdCI6MTcwNDM1NTM1M30.iIqaIOC216iH_yvZSAPlt1gw_EQ4v_y9KyH8b1ptKn4i44OHQ5oDvteaHEjrLkfvKfqf3CrYotXQkRoryaguZA","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "4a923680-17fc-4a31-ac46-5474c77ed87b", "befores": [{"name": "case_url", "status": "passed", "start": 1704355353513, "stop": 1704355353513}], "start": 1704355353513, "stop": 1704355353705}
\ No newline at end of file
{"uuid": "26f4cf69-cdad-43ce-90b0-48d247d34e3b", "befores": [{"name": "case_level", "status": "passed", "start": 1704355360150, "stop": 1704355360150}], "start": 1704355360150, "stop": 1704355360218}
\ No newline at end of file
{"uuid": "3320654d-fe52-4584-ae14-423acb8a794b", "befores": [{"name": "update_key", "status": "passed", "start": 1704355358870, "stop": 1704355358870}], "start": 1704355358870, "stop": 1704355358964}
\ No newline at end of file
{"uuid": "89463118-01d2-4fc3-9ce8-38cf78eca62c", "befores": [{"name": "update_key", "status": "passed", "start": 1704355351892, "stop": 1704355351892}], "start": 1704355351892, "stop": 1704355351944}
\ No newline at end of file
{"uuid": "30059d6a-74ca-4b50-a39d-b1ad1fdc91c4", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355357501, "stop": 1704355357501}], "start": 1704355357501, "stop": 1704355357684}
\ No newline at end of file
{"uuid": "7da6dd8c-c57b-4b01-8d4a-eec81b013b26", "befores": [{"name": "api_name", "status": "passed", "start": 1704355355668, "stop": 1704355355668}], "start": 1704355355668, "stop": 1704355355738}
\ No newline at end of file
{"uuid": "b8fc43f2-fa6d-4a13-a76e-fd460c4d24e9", "befores": [{"name": "case_req", "status": "passed", "start": 1704355355263, "stop": 1704355355263}], "start": 1704355355263, "stop": 1704355355373}
\ No newline at end of file
{"uuid": "c2fd6657-f557-4763-9ea1-5ffabb7adbef", "befores": [{"name": "case_url", "status": "passed", "start": 1704355360438, "stop": 1704355360438}], "start": 1704355360438, "stop": 1704355360577}
\ No newline at end of file
{"uuid": "3c21fa1e-ebc2-4b51-a5b1-9904790c8dbe", "befores": [{"name": "update_key", "status": "passed", "start": 1704355358016, "stop": 1704355358016}], "start": 1704355358016, "stop": 1704355358083}
\ No newline at end of file
{"uuid": "8639d220-380e-493a-aed8-d96830f66f46", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355359345, "stop": 1704355359345}], "start": 1704355359345, "stop": 1704355359411}
\ No newline at end of file
{"uuid": "fbbc5c8a-4a01-465c-89de-9eb73d15b417", "befores": [{"name": "module_name", "status": "passed", "start": 1704355358709, "stop": 1704355358709}], "start": 1704355358709, "stop": 1704355358766}
\ No newline at end of file
{"uuid": "b18c582f-3196-4dd1-81ee-759e12a94179", "befores": [{"name": "case_level", "status": "passed", "start": 1704355353315, "stop": 1704355353315}], "start": 1704355353315, "stop": 1704355353510}
\ No newline at end of file
{"uuid": "e7d4fe2f-3e70-4f4a-952f-c02bf47b56ba", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355351528, "stop": 1704355351528}], "start": 1704355351528, "stop": 1704355351595}
\ No newline at end of file
{"uuid": "7fa1deac-2fab-437d-87dc-bbf7c26c36f2", "befores": [{"name": "api_name", "status": "passed", "start": 1704355352678, "stop": 1704355352678}], "start": 1704355352678, "stop": 1704355352744}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x000001464842C040>('message')\nE + where <built-in method get of dict object at 0x000001464842C040> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...} = <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 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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"}, "attachments": [{"name": "log", "source": "384fc6c5-a265-4c97-90a0-d85bd01a1ff3-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'刷新token'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'GET'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/refresh'"}, {"name": "case_mime", "value": "None"}, {"name": "case_data", "value": "None"}, {"name": "expect_data", "value": "{'message': '刷新成功'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355360223, "stop": 1704355360282, "uuid": "76afca54-9341-409c-968b-c93143d1b3a6", "historyId": "8a137f95ba4a68bf446ff9343a1271df", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "刷新token"}, {"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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "72f0cd1f-ecdf-4a96-9fa5-6d5451ef0b56", "befores": [{"name": "case_title", "status": "passed", "start": 1704355360584, "stop": 1704355360584}], "start": 1704355360584, "stop": 1704355360786}
\ No newline at end of file
{"uuid": "04aca301-3f37-4b4c-b09d-6b794e2e0951", "befores": [{"name": "module_name", "status": "passed", "start": 1704355352532, "stop": 1704355352532}], "start": 1704355352532, "stop": 1704355352601}
\ No newline at end of file
{"uuid": "638517be-f75b-480a-9297-c5f1b7580773", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355356441, "stop": 1704355356441}], "start": 1704355356441, "stop": 1704355356505}
\ No newline at end of file
{"uuid": "185f2e39-0806-4299-b907-5b0299e7dd91", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355356374, "stop": 1704355356374}], "start": 1704355356374, "stop": 1704355356435}
\ No newline at end of file
{"uuid": "65291411-040e-4c0e-99c7-c3e5c536e4a7", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355356232, "stop": 1704355356232}], "start": 1704355356232, "stop": 1704355356294}
\ No newline at end of file
{"uuid": "24c614ec-fa9e-40e7-ba4e-abb01c422d6c", "befores": [{"name": "case_url", "status": "passed", "start": 1704355357313, "stop": 1704355357313}], "start": 1704355357312, "stop": 1704355357497}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTQsImlhdCI6MTcwNDM1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "b24c3d2a-5da1-41dc-b5ff-f8eb9f0ecfe7", "befores": [{"name": "case_req", "status": "passed", "start": 1704355351745, "stop": 1704355351745}], "start": 1704355351745, "stop": 1704355351813}
\ No newline at end of file
{"uuid": "53eed333-5f0e-43bf-9e1f-0e9f8517d467", "befores": [{"name": "update_key", "status": "passed", "start": 1704355355068, "stop": 1704355355068}], "start": 1704355355068, "stop": 1704355355157}
\ No newline at end of file
{"uuid": "a6e540c0-a5ab-4dec-89a3-a53472e95934", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355351114, "stop": 1704355351114}], "start": 1704355351114, "stop": 1704355351206}
\ No newline at end of file
{"uuid": "f2181fe2-f0fd-4813-875b-e315176382c0", "befores": [{"name": "api_name", "status": "passed", "start": 1704355361898, "stop": 1704355361898}], "start": 1704355361898, "stop": 1704355361962}
\ No newline at end of file
{"uuid": "50769181-b0cc-4518-a4b6-ac8d2842bafa", "befores": [{"name": "case_req", "status": "passed", "start": 1704355360222, "stop": 1704355360222}], "start": 1704355360222, "stop": 1704355360294}
\ No newline at end of file
{"uuid": "bf254d1d-a6c0-4296-ae63-9643aab7764b", "befores": [{"name": "case_data", "status": "passed", "start": 1704355356511, "stop": 1704355356511}], "start": 1704355356511, "stop": 1704355356576}
\ No newline at end of file
{"uuid": "30801e63-e63b-4dc4-a828-4fe3ec5eb90c", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355360299, "stop": 1704355360299}], "start": 1704355360299, "stop": 1704355360361}
\ No newline at end of file
{"uuid": "782dcbba-189f-41ae-9511-00378f4235b2", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355361565, "stop": 1704355361565}], "start": 1704355361565, "stop": 1704355361750}
\ No newline at end of file
{"uuid": "9f5fb926-4c22-4cd1-98f6-e110c2f1e275", "befores": [{"name": "case_level", "status": "passed", "start": 1704355351892, "stop": 1704355351892}], "start": 1704355351892, "stop": 1704355351950}
\ No newline at end of file
{"uuid": "0e2ecccd-b330-4f72-bb2f-8843e80e1a53", "befores": [{"name": "module_name", "status": "passed", "start": 1704355359654, "stop": 1704355359654}], "start": 1704355359654, "stop": 1704355359755}
\ No newline at end of file
{"uuid": "50eadfbe-db50-4a1b-955f-efb4b8f80c33", "befores": [{"name": "case_data", "status": "passed", "start": 1704355357950, "stop": 1704355357950}], "start": 1704355357950, "stop": 1704355358009}
\ No newline at end of file
{"uuid": "08f9c65a-12f7-4d07-b4c6-0f209e5c45b6", "befores": [{"name": "case_title", "status": "passed", "start": 1704355361834, "stop": 1704355361834}], "start": 1704355361834, "stop": 1704355361894}
\ No newline at end of file
{"uuid": "8b357f47-00e2-49af-89d7-7462da553a70", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355360368, "stop": 1704355360368}], "start": 1704355360368, "stop": 1704355360431}
\ No newline at end of file
{"uuid": "1516b786-7fa2-4e71-90a8-e87b2939e1b8", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355360222, "stop": 1704355360222}], "start": 1704355360222, "stop": 1704355360291}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_dependecy_template.test_dependecy_template.TestDependency object at 0x00000146473026A0>\n\n @allure.feature(\"维度管理\")\n @allure.story(\"添加维度\")\n @allure.title(\"正向用例\")\n @allure.severity(\"\")\n @pytest.mark.dependency(depends=[\"TestDependency::test_login\"])\n def test_add_demo(self):\n add_dem_url = \"http://120.46.172.186:8080/api/demension/v1/dem/addDem\"\n add_dem_data = {\n \"code\": \"dem_code_test_528\",\n \"description\": \"测试维度528\",\n \"isDefault\": 0,\n \"name\": \"测试维度518\"\n }\n header = {\"Authorization\": \"Bearer \" + data_dict[\"token\"]}\n print(header)\n res = requests.request(method=\"post\", url=add_dem_url, json=add_dem_data, headers=header)\n # 断言\n try:\n> assert \"成功\" in res.text\nE assert '成功' in '{\"state\":false,\"message\":\"添加维度失败,维度编码【dem_code_test_528】在系统中已存在!\",\"value\":\"\"}'\nE + where '{\"state\":false,\"message\":\"添加维度失败,维度编码【dem_code_test_528】在系统中已存在!\",\"value\":\"\"}' = <Response [200]>.text\n\ntest_case\\test_dependecy_template\\test_dependecy_template.py:60: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_dependecy_template.test_dependecy_template.TestDependency object at 0x00000146473026A0>\n\n @allure.feature(\"维度管理\")\n @allure.story(\"添加维度\")\n @allure.title(\"正向用例\")\n @allure.severity(\"\")\n @pytest.mark.dependency(depends=[\"TestDependency::test_login\"])\n def test_add_demo(self):\n add_dem_url = \"http://120.46.172.186:8080/api/demension/v1/dem/addDem\"\n add_dem_data = {\n \"code\": \"dem_code_test_528\",\n \"description\": \"测试维度528\",\n \"isDefault\": 0,\n \"name\": \"测试维度518\"\n }\n header = {\"Authorization\": \"Bearer \" + data_dict[\"token\"]}\n print(header)\n res = requests.request(method=\"post\", url=add_dem_url, json=add_dem_data, headers=header)\n # 断言\n try:\n assert \"成功\" in res.text\n except AssertionError:\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_dependecy_template\\test_dependecy_template.py:62: AssertionError"}, "attachments": [{"name": "stdout", "source": "0dccb819-de86-47fe-b789-3aa1099a8181-attachment.txt", "type": "text/plain"}], "start": 1704355350576, "stop": 1704355350662, "uuid": "0c0ff655-d3eb-468e-b7be-30a4c63cab83", "historyId": "8721a2d64cab6ba6f324c88ca9e788fa", "testCaseId": "8721a2d64cab6ba6f324c88ca9e788fa", "fullName": "test_case.test_dependecy_template.test_dependecy_template.TestDependency#test_add_demo", "labels": [{"name": "story", "value": "添加维度"}, {"name": "feature", "value": "维度管理"}, {"name": "epic", "value": "BPM系统依赖"}, {"name": "severity", "value": "高"}, {"name": "tag", "value": "dependency(depends=['TestDependency::test_login'])"}, {"name": "parentSuite", "value": "test_case.test_dependecy_template"}, {"name": "suite", "value": "test_dependecy_template"}, {"name": "subSuite", "value": "TestDependency"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_dependecy_template.test_dependecy_template"}]}
\ No newline at end of file
{"uuid": "ed7915a7-0196-49a0-9514-72e379fbf17e", "befores": [{"name": "case_data", "status": "passed", "start": 1704355360438, "stop": 1704355360438}], "start": 1704355360438, "stop": 1704355360576}
\ No newline at end of file
{"uuid": "eaaa62a9-3109-40fa-aa10-b1d87cc538a0", "befores": [{"name": "case_url", "status": "passed", "start": 1704355357112, "stop": 1704355357112}], "start": 1704355357112, "stop": 1704355357306}
\ No newline at end of file
{"uuid": "ea10d925-4381-4718-aaaf-72cf4cfbbd4d", "befores": [{"name": "case_title", "status": "passed", "start": 1704355351411, "stop": 1704355351411}], "start": 1704355351411, "stop": 1704355351523}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTgsImlhdCI6MTcwNDM1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "387c4077-45e0-41d9-8ff9-9bbf5fb28d51", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355355377, "stop": 1704355355377}], "start": 1704355355377, "stop": 1704355355448}
\ No newline at end of file
{"uuid": "22040552-f53c-46d0-a532-c551eb3fd22c", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355359082, "stop": 1704355359082}], "start": 1704355359082, "stop": 1704355359191}
\ No newline at end of file
{"uuid": "980754db-3a2b-4813-b841-6a17613d6dfe", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355354102, "stop": 1704355354102}], "start": 1704355354102, "stop": 1704355354163}
\ No newline at end of file
{"uuid": "dde44832-f759-4a11-8660-9e9e8657b4e4", "befores": [{"name": "case_title", "status": "passed", "start": 1704355355741, "stop": 1704355355741}], "start": 1704355355741, "stop": 1704355355798}
\ No newline at end of file
{"uuid": "3756aaa9-c216-4a6a-ba6c-2ac04ef15eee", "befores": [{"name": "api_name", "status": "passed", "start": 1704355359969, "stop": 1704355359969}], "start": 1704355359969, "stop": 1704355360075}
\ No newline at end of file
{"uuid": "ff64d254-149f-413e-9100-df31ed92bea5", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355351819, "stop": 1704355351819}], "start": 1704355351819, "stop": 1704355351884}
\ No newline at end of file
{"uuid": "e7cfed24-b017-476d-9620-b7a0b14ce1c8", "befores": [{"name": "api_name", "status": "passed", "start": 1704355354411, "stop": 1704355354411}], "start": 1704355354411, "stop": 1704355354557}
\ No newline at end of file
{"uuid": "7b22041f-906d-4318-975b-831b42ee3488", "befores": [{"name": "case_level", "status": "passed", "start": 1704355359655, "stop": 1704355359655}], "start": 1704355359655, "stop": 1704355359753}
\ No newline at end of file
{"uuid": "0086d219-39e5-46aa-afa2-ebb9344422cb", "befores": [{"name": "case_req", "status": "passed", "start": 1704355355453, "stop": 1704355355453}], "start": 1704355355453, "stop": 1704355355521}
\ No newline at end of file
{"uuid": "b68ee581-6806-442a-98f2-8d09f68ba03d", "befores": [{"name": "case_data", "status": "passed", "start": 1704355351114, "stop": 1704355351114}], "start": 1704355351114, "stop": 1704355351206}
\ No newline at end of file
{"uuid": "5da93b74-6056-49ec-a0e2-06de7960606f", "befores": [{"name": "update_key", "status": "passed", "start": 1704355356374, "stop": 1704355356374}], "start": 1704355356374, "stop": 1704355356434}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "06a7ba2e-c45e-4055-a0e0-124a46ae7c69", "befores": [{"name": "case_level", "status": "passed", "start": 1704355355452, "stop": 1704355355453}], "start": 1704355355452, "stop": 1704355355521}
\ No newline at end of file
{"uuid": "7b6b567c-cd26-4f82-a962-d31bb42c67e1", "befores": [{"name": "case_data", "status": "passed", "start": 1704355356374, "stop": 1704355356374}], "start": 1704355356374, "stop": 1704355356435}
\ No newline at end of file
{"uuid": "9f720236-df2f-4b82-a0b2-a275eff0f766", "befores": [{"name": "case_req", "status": "passed", "start": 1704355356582, "stop": 1704355356582}], "start": 1704355356582, "stop": 1704355356723}
\ No newline at end of file
{"uuid": "6c368a4b-8d3c-4516-89e7-d95c6267b655", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355352532, "stop": 1704355352532}], "start": 1704355352532, "stop": 1704355352597}
\ No newline at end of file
{"uuid": "d34dc22a-c3ee-4a57-b7cb-2ecf57ba2f06", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355352394, "stop": 1704355352394}], "start": 1704355352394, "stop": 1704355352455}
\ No newline at end of file
{"uuid": "c381f3b3-cd10-4fed-9000-151cc0b7a038", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355355165, "stop": 1704355355165}], "start": 1704355355165, "stop": 1704355355255}
\ No newline at end of file
{"uuid": "7b30ed8b-1d54-41c2-8e56-846bb1868b87", "befores": [{"name": "case_level", "status": "passed", "start": 1704355359595, "stop": 1704355359595}], "start": 1704355359595, "stop": 1704355359650}
\ No newline at end of file
{"uuid": "aa0bf88c-fc82-4710-aa5d-33a48fe8b3e9", "befores": [{"name": "case_data", "status": "passed", "start": 1704355354307, "stop": 1704355354307}], "start": 1704355354307, "stop": 1704355354404}
\ No newline at end of file
{"uuid": "76098081-8bdc-4a54-aa03-c1bc79baeb06", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355352061, "stop": 1704355352061}], "start": 1704355352061, "stop": 1704355352156}
\ No newline at end of file
{"name": "反向用例-password为特殊字符", "status": "passed", "attachments": [{"name": "log", "source": "849fc3f8-0b85-4c94-b91a-22f4c6c96460-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "5c175091-7c03-4e9d-b1e5-7f207eae3883-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-password为特殊字符'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': '♠♣▣▤▥▦▩◘◙◈'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355352166, "stop": 1704355352262, "uuid": "4c8251e9-1c1f-4224-aede-048848bf2539", "historyId": "7b1bdaf6e37bbb9241593d069d02be7e", "testCaseId": "f2fe01aec482200ae6914516b7a8fbd5", "fullName": "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM系统-老王"}, {"name": "parentSuite", "value": "test_case.test_mr_wang"}, {"name": "suite", "value": "test_mr_wang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_wang.test_mr_wang"}]}
\ No newline at end of file
{"uuid": "e79a8d5e-5fe6-4ef1-bc59-1022ffe6af05", "befores": [{"name": "case_req", "status": "passed", "start": 1704355361834, "stop": 1704355361834}], "start": 1704355361834, "stop": 1704355361893}
\ No newline at end of file
{"uuid": "2c5f5e65-d4c9-4dbf-b609-32c5a8086cbf", "befores": [{"name": "case_data", "status": "passed", "start": 1704355356729, "stop": 1704355356729}], "start": 1704355356729, "stop": 1704355356912}
\ No newline at end of file
{"uuid": "2ce432d7-36d1-4520-93c3-36735e69db27", "befores": [{"name": "case_title", "status": "passed", "start": 1704355359344, "stop": 1704355359344}], "start": 1704355359344, "stop": 1704355359415}
\ No newline at end of file
{"uuid": "38774142-9801-4d43-bdd0-27ff5d1ec7ad", "befores": [{"name": "module_name", "status": "passed", "start": 1704355355526, "stop": 1704355355526}], "start": 1704355355526, "stop": 1704355355595}
\ No newline at end of file
{"uuid": "bf891d87-03fc-4330-bf34-0764bf5716da", "befores": [{"name": "case_title", "status": "passed", "start": 1704355361757, "stop": 1704355361757}], "start": 1704355361757, "stop": 1704355361820}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NDksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NDksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NDksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NDksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTAsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTAsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "95dca054-044b-4bc4-9365-13781e40d25c", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355351411, "stop": 1704355351411}], "start": 1704355351411, "stop": 1704355351521}
\ No newline at end of file
{"uuid": "dcfee879-4880-4520-a3ea-8d19e7633f99", "befores": [{"name": "case_req", "status": "passed", "start": 1704355354168, "stop": 1704355354168}], "start": 1704355354168, "stop": 1704355354228}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_dependecy_template.test_dependecy_template.TestDependency object at 0x00000146473026A0>\n\n @allure.feature(\"维度管理\")\n @allure.story(\"添加维度\")\n @allure.title(\"正向用例\")\n @allure.severity(\"\")\n @pytest.mark.dependency(depends=[\"TestDependency::test_login\"])\n def test_add_demo(self):\n add_dem_url = \"http://120.46.172.186:8080/api/demension/v1/dem/addDem\"\n add_dem_data = {\n \"code\": \"dem_code_test_528\",\n \"description\": \"测试维度528\",\n \"isDefault\": 0,\n \"name\": \"测试维度518\"\n }\n header = {\"Authorization\": \"Bearer \" + data_dict[\"token\"]}\n print(header)\n res = requests.request(method=\"post\", url=add_dem_url, json=add_dem_data, headers=header)\n # 断言\n try:\n> assert \"成功\" in res.text\nE assert '成功' in '{\"state\":false,\"message\":\"添加维度失败,维度编码【dem_code_test_528】在系统中已存在!\",\"value\":\"\"}'\nE + where '{\"state\":false,\"message\":\"添加维度失败,维度编码【dem_code_test_528】在系统中已存在!\",\"value\":\"\"}' = <Response [200]>.text\n\ntest_case\\test_dependecy_template\\test_dependecy_template.py:60: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_dependecy_template.test_dependecy_template.TestDependency object at 0x00000146473026A0>\n\n @allure.feature(\"维度管理\")\n @allure.story(\"添加维度\")\n @allure.title(\"正向用例\")\n @allure.severity(\"\")\n @pytest.mark.dependency(depends=[\"TestDependency::test_login\"])\n def test_add_demo(self):\n add_dem_url = \"http://120.46.172.186:8080/api/demension/v1/dem/addDem\"\n add_dem_data = {\n \"code\": \"dem_code_test_528\",\n \"description\": \"测试维度528\",\n \"isDefault\": 0,\n \"name\": \"测试维度518\"\n }\n header = {\"Authorization\": \"Bearer \" + data_dict[\"token\"]}\n print(header)\n res = requests.request(method=\"post\", url=add_dem_url, json=add_dem_data, headers=header)\n # 断言\n try:\n assert \"成功\" in res.text\n except AssertionError:\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_dependecy_template\\test_dependecy_template.py:62: AssertionError"}, "attachments": [{"name": "stdout", "source": "01a680f5-33c8-4134-8ad4-1f97e4bf154c-attachment.txt", "type": "text/plain"}], "start": 1704355350289, "stop": 1704355350373, "uuid": "94a260a5-1336-40a4-a9d2-9b73cf68fb94", "historyId": "8721a2d64cab6ba6f324c88ca9e788fa", "testCaseId": "8721a2d64cab6ba6f324c88ca9e788fa", "fullName": "test_case.test_dependecy_template.test_dependecy_template.TestDependency#test_add_demo", "labels": [{"name": "story", "value": "添加维度"}, {"name": "feature", "value": "维度管理"}, {"name": "epic", "value": "BPM系统依赖"}, {"name": "severity", "value": "高"}, {"name": "tag", "value": "dependency(depends=['TestDependency::test_login'])"}, {"name": "parentSuite", "value": "test_case.test_dependecy_template"}, {"name": "suite", "value": "test_dependecy_template"}, {"name": "subSuite", "value": "TestDependency"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_dependecy_template.test_dependecy_template"}]}
\ No newline at end of file
{"uuid": "49b7b8fe-bf4d-4772-995b-ff4014b456cf", "befores": [{"name": "case_title", "status": "passed", "start": 1704355351602, "stop": 1704355351602}], "start": 1704355351602, "stop": 1704355351670}
\ No newline at end of file
{"uuid": "99b882b6-e5ff-406b-8221-df84dd7ad49f", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355362068, "stop": 1704355362068}], "start": 1704355362068, "stop": 1704355362214}
\ No newline at end of file
{"uuid": "39d58f39-002f-40fc-9151-3d840a9c3f76", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355355068, "stop": 1704355355068}], "start": 1704355355068, "stop": 1704355355158}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "fd645963-3b6b-4e2f-a534-75ecd0d06f7f", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355359197, "stop": 1704355359197}], "start": 1704355359197, "stop": 1704355359260}
\ No newline at end of file
{"uuid": "a98fc224-ae06-4367-8e32-d01e083032ea", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355356511, "stop": 1704355356511}], "start": 1704355356511, "stop": 1704355356574}
\ No newline at end of file
{"uuid": "58677941-526f-49d2-92a0-d8ed6d522ed8", "befores": [{"name": "case_url", "status": "passed", "start": 1704355359197, "stop": 1704355359197}], "start": 1704355359197, "stop": 1704355359263}
\ No newline at end of file
{"uuid": "ea40df7f-82f5-4808-82fa-20b4b2611d62", "befores": [{"name": "api_name", "status": "passed", "start": 1704355351411, "stop": 1704355351411}], "start": 1704355351411, "stop": 1704355351524}
\ No newline at end of file
{"uuid": "b49d6225-0d4f-41b5-bf96-f64bca5ce09c", "befores": [{"name": "case_data", "status": "passed", "start": 1704355354102, "stop": 1704355354102}], "start": 1704355354102, "stop": 1704355354162}
\ No newline at end of file
{"uuid": "69824fe5-dd00-44dd-b51d-f35c01c651dd", "befores": [{"name": "update_key", "status": "passed", "start": 1704355354848, "stop": 1704355354848}], "start": 1704355354847, "stop": 1704355354900}
\ No newline at end of file
{"uuid": "408e72e3-66d7-4d4b-a4ee-3d2e978441a2", "befores": [{"name": "case_title", "status": "passed", "start": 1704355355905, "stop": 1704355355905}], "start": 1704355355905, "stop": 1704355356002}
\ No newline at end of file
{"uuid": "16745006-a2c6-42e3-bb46-f0e7445e1255", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355354307, "stop": 1704355354307}], "start": 1704355354307, "stop": 1704355354404}
\ No newline at end of file
{"uuid": "83862965-ee6c-4ea6-93a4-75fef9fdefa5", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355355526, "stop": 1704355355526}], "start": 1704355355526, "stop": 1704355355592}
\ No newline at end of file
{"uuid": "5c2078fa-a16f-4433-89a5-aa2fe7b3ee25", "befores": [{"name": "case_req", "status": "passed", "start": 1704355357501, "stop": 1704355357501}], "start": 1704355357501, "stop": 1704355357685}
\ No newline at end of file
{"uuid": "764cb883-5ac3-4163-a2dc-a3441e3914a6", "befores": [{"name": "api_name", "status": "passed", "start": 1704355354234, "stop": 1704355354234}], "start": 1704355354234, "stop": 1704355354303}
\ No newline at end of file
{"uuid": "1c2a7094-6d5e-4a71-a425-c83e4e8533c2", "befores": [{"name": "update_key", "status": "passed", "start": 1704355354412, "stop": 1704355354412}], "start": 1704355354412, "stop": 1704355354552}
\ No newline at end of file
{"uuid": "9643fd1f-90d3-49bd-85b7-e747dbfc9942", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355361758, "stop": 1704355361758}], "start": 1704355361758, "stop": 1704355361817}
\ No newline at end of file
{"name": "反向用例-username过长", "status": "passed", "attachments": [{"name": "log", "source": "d35fa832-0fad-4061-a47a-9f3e7cd80f41-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "b81a3eba-c1c6-4ea7-bd32-92680e7bc2a2-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username过长'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'adminadminadminadminadminadminadminadminadminadmin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355351213, "stop": 1704355351304, "uuid": "18fc0fb5-22ab-483c-a809-7ea019542b69", "historyId": "daf677fc2fd95dc52e7ba6d359a27569", "testCaseId": "f2fe01aec482200ae6914516b7a8fbd5", "fullName": "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM系统-老王"}, {"name": "parentSuite", "value": "test_case.test_mr_wang"}, {"name": "suite", "value": "test_mr_wang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_wang.test_mr_wang"}]}
\ No newline at end of file
{"uuid": "a08ccea4-5d6f-45d3-b823-66a30eef82d1", "befores": [{"name": "update_key", "status": "passed", "start": 1704355357880, "stop": 1704355357880}], "start": 1704355357880, "stop": 1704355357941}
\ No newline at end of file
{"uuid": "39e14bd2-166f-4dcd-b82d-ae89bbfa5501", "befores": [{"name": "module_name", "status": "passed", "start": 1704355353513, "stop": 1704355353513}], "start": 1704355353513, "stop": 1704355353706}
\ No newline at end of file
{"uuid": "58da95ac-914d-4e7a-b553-7372ce996aae", "befores": [{"name": "case_req", "status": "passed", "start": 1704355359969, "stop": 1704355359969}], "start": 1704355359969, "stop": 1704355360073}
\ No newline at end of file
{"uuid": "7eacfccd-0b19-4d59-a7f4-aef1df974cfe", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355352281, "stop": 1704355352281}], "start": 1704355352281, "stop": 1704355352386}
\ No newline at end of file
{"uuid": "93c54143-dbf0-4649-96a1-b89a99647695", "befores": [{"name": "case_req", "status": "passed", "start": 1704355351052, "stop": 1704355351052}], "start": 1704355351052, "stop": 1704355351108}
\ No newline at end of file
{"uuid": "3c6dc93a-8ace-4f70-91c6-840aa8d97786", "befores": [{"name": "module_name", "status": "passed", "start": 1704355359419, "stop": 1704355359419}], "start": 1704355359419, "stop": 1704355359491}
\ No newline at end of file
{"uuid": "4e7cc3bc-a9a7-4656-a8c5-7900130a39c3", "befores": [{"name": "case_level", "status": "passed", "start": 1704355351411, "stop": 1704355351411}], "start": 1704355351411, "stop": 1704355351523}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "bea9eae8-bb36-4276-a4ab-f479af74435b", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355354307, "stop": 1704355354307}], "start": 1704355354307, "stop": 1704355354403}
\ No newline at end of file
{"uuid": "fd228bd4-aa78-44ff-8eb1-6a32bc232ccc", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355355263, "stop": 1704355355263}], "start": 1704355355263, "stop": 1704355355371}
\ No newline at end of file
{"uuid": "8f917eec-247f-49fa-bc78-7bf86dbf42fc", "befores": [{"name": "case_level", "status": "passed", "start": 1704355356582, "stop": 1704355356582}], "start": 1704355356582, "stop": 1704355356724}
\ No newline at end of file
{"uuid": "c9f86f74-ed7b-4270-8afc-bd25244b49a0", "befores": [{"name": "update_key", "status": "passed", "start": 1704355357950, "stop": 1704355357950}], "start": 1704355357950, "stop": 1704355358007}
\ No newline at end of file
{"uuid": "1e69ce79-3dc5-4040-a105-c51f421cfb11", "befores": [{"name": "update_key", "status": "passed", "start": 1704355354235, "stop": 1704355354235}], "start": 1704355354235, "stop": 1704355354294}
\ No newline at end of file
{"name": "反向用例-password过短", "status": "passed", "attachments": [{"name": "log", "source": "e8518780-1d6e-446b-87ea-521751a9df15-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "de7e519c-9160-4fd2-a74a-86f57e939138-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-password过短'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'm'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355352061, "stop": 1704355352154, "uuid": "4474f1d4-17ff-49a8-a3b0-6858f0585eb8", "historyId": "094640862cf1a2dd8fdee8fafdf5156c", "testCaseId": "f2fe01aec482200ae6914516b7a8fbd5", "fullName": "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM系统-老王"}, {"name": "parentSuite", "value": "test_case.test_mr_wang"}, {"name": "suite", "value": "test_mr_wang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_wang.test_mr_wang"}]}
\ No newline at end of file
{"uuid": "a0fe5379-03bf-43fd-ba06-0086ca6bc529", "befores": [{"name": "module_name", "status": "passed", "start": 1704355361897, "stop": 1704355361897}], "start": 1704355361897, "stop": 1704355361963}
\ No newline at end of file
{"uuid": "3173996b-2390-49f7-a197-0531e35c2119", "befores": [{"name": "case_title", "status": "passed", "start": 1704355352393, "stop": 1704355352393}], "start": 1704355352393, "stop": 1704355352458}
\ No newline at end of file
{"uuid": "a91f8029-89d5-4d51-a7f1-914a158fa503", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355359655, "stop": 1704355359655}], "start": 1704355359655, "stop": 1704355359750}
\ No newline at end of file
{"uuid": "4d29827a-fbf0-4053-947e-55979d7aacf7", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355359655, "stop": 1704355359655}], "start": 1704355359655, "stop": 1704355359751}
\ No newline at end of file
{"uuid": "97b1b22f-950a-453a-91cf-480447a65580", "befores": [{"name": "api_name", "status": "passed", "start": 1704355356006, "stop": 1704355356006}], "start": 1704355356006, "stop": 1704355356107}
\ No newline at end of file
{"uuid": "48b60366-23c8-46ef-bf97-67c7c8e90b3e", "befores": [{"name": "case_data", "status": "passed", "start": 1704355354908, "stop": 1704355354908}], "start": 1704355354908, "stop": 1704355354960}
\ No newline at end of file
{"uuid": "6208c17f-518b-438e-a9d5-e82c4f6a0e1b", "befores": [{"name": "module_name", "status": "passed", "start": 1704355355801, "stop": 1704355355801}], "start": 1704355355801, "stop": 1704355355901}
\ No newline at end of file
{"uuid": "66e7aeb6-b29f-47a4-933e-d5b28099a69b", "befores": [{"name": "api_name", "status": "passed", "start": 1704355357950, "stop": 1704355357950}], "start": 1704355357950, "stop": 1704355358011}
\ No newline at end of file
{"uuid": "893fea49-8385-46c3-9150-6bd1801e8a70", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355361834, "stop": 1704355361834}], "start": 1704355361834, "stop": 1704355361891}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_dependecy_template.test_dependecy_template.TestDependency object at 0x00000146473026A0>\n\n @allure.feature(\"维度管理\")\n @allure.story(\"添加维度\")\n @allure.title(\"正向用例\")\n @allure.severity(\"\")\n @pytest.mark.dependency(depends=[\"TestDependency::test_login\"])\n def test_add_demo(self):\n add_dem_url = \"http://120.46.172.186:8080/api/demension/v1/dem/addDem\"\n add_dem_data = {\n \"code\": \"dem_code_test_528\",\n \"description\": \"测试维度528\",\n \"isDefault\": 0,\n \"name\": \"测试维度518\"\n }\n header = {\"Authorization\": \"Bearer \" + data_dict[\"token\"]}\n print(header)\n res = requests.request(method=\"post\", url=add_dem_url, json=add_dem_data, headers=header)\n # 断言\n try:\n> assert \"成功\" in res.text\nE assert '成功' in '{\"state\":false,\"message\":\"添加维度失败,维度编码【dem_code_test_528】在系统中已存在!\",\"value\":\"\"}'\nE + where '{\"state\":false,\"message\":\"添加维度失败,维度编码【dem_code_test_528】在系统中已存在!\",\"value\":\"\"}' = <Response [200]>.text\n\ntest_case\\test_dependecy_template\\test_dependecy_template.py:60: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_dependecy_template.test_dependecy_template.TestDependency object at 0x00000146473026A0>\n\n @allure.feature(\"维度管理\")\n @allure.story(\"添加维度\")\n @allure.title(\"正向用例\")\n @allure.severity(\"\")\n @pytest.mark.dependency(depends=[\"TestDependency::test_login\"])\n def test_add_demo(self):\n add_dem_url = \"http://120.46.172.186:8080/api/demension/v1/dem/addDem\"\n add_dem_data = {\n \"code\": \"dem_code_test_528\",\n \"description\": \"测试维度528\",\n \"isDefault\": 0,\n \"name\": \"测试维度518\"\n }\n header = {\"Authorization\": \"Bearer \" + data_dict[\"token\"]}\n print(header)\n res = requests.request(method=\"post\", url=add_dem_url, json=add_dem_data, headers=header)\n # 断言\n try:\n assert \"成功\" in res.text\n except AssertionError:\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_dependecy_template\\test_dependecy_template.py:62: AssertionError"}, "attachments": [{"name": "stdout", "source": "98a41dfe-adcd-4657-af89-fff522910c98-attachment.txt", "type": "text/plain"}], "start": 1704355350193, "stop": 1704355350279, "uuid": "1250b974-1363-4976-94e6-c910d205b351", "historyId": "8721a2d64cab6ba6f324c88ca9e788fa", "testCaseId": "8721a2d64cab6ba6f324c88ca9e788fa", "fullName": "test_case.test_dependecy_template.test_dependecy_template.TestDependency#test_add_demo", "labels": [{"name": "story", "value": "添加维度"}, {"name": "feature", "value": "维度管理"}, {"name": "epic", "value": "BPM系统依赖"}, {"name": "severity", "value": "高"}, {"name": "tag", "value": "dependency(depends=['TestDependency::test_login'])"}, {"name": "parentSuite", "value": "test_case.test_dependecy_template"}, {"name": "suite", "value": "test_dependecy_template"}, {"name": "subSuite", "value": "TestDependency"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_dependecy_template.test_dependecy_template"}]}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "40c09ab2-c8d2-4292-957e-a7b14a6e4c17", "befores": [{"name": "case_req", "status": "passed", "start": 1704355351112, "stop": 1704355351114}], "start": 1704355351112, "stop": 1704355351207}
\ No newline at end of file
{"uuid": "c8741c5a-0304-43a5-b6a8-b3de427579cc", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355352678, "stop": 1704355352678}], "start": 1704355352678, "stop": 1704355352741}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NDksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NDksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "60f0062e-b962-4539-af4c-47fb3054407d", "befores": [{"name": "case_level", "status": "passed", "start": 1704355350984, "stop": 1704355350984}], "start": 1704355350984, "stop": 1704355351046}
\ No newline at end of file
{"uuid": "4aa73ea1-116f-40ed-a95a-9856e14bdb98", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355356007, "stop": 1704355356007}], "start": 1704355356007, "stop": 1704355356105}
\ No newline at end of file
{"uuid": "3afd1dea-dbc9-41ed-9e14-d2e28ca99d44", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355355068, "stop": 1704355355068}], "start": 1704355355068, "stop": 1704355355158}
\ No newline at end of file
{"uuid": "43970563-fc6e-4dd7-bbda-94d94cbefc43", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355358769, "stop": 1704355358769}], "start": 1704355358769, "stop": 1704355358862}
\ No newline at end of file
{"name": "反向用例-username为特殊字符", "status": "passed", "attachments": [{"name": "log", "source": "5c37d4e3-c103-47ea-819e-8a02d6371c68-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "de907e0d-ebfc-43a9-bf3e-765d9e1b36bc-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username为特殊字符'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': '♠♣▣▤▥▦▩◘◙◈', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355358976, "stop": 1704355359073, "uuid": "a2246d3b-2ad1-43a0-a40b-c59bf03f62ba", "historyId": "7202381dddb21f932d39e36e18235e7a", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "1aa84c04-078b-4245-9493-a92481fb5d72", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355356729, "stop": 1704355356729}], "start": 1704355356729, "stop": 1704355356912}
\ No newline at end of file
{"uuid": "5cfed684-4184-44fd-ac9e-2287552a737b", "befores": [{"name": "case_req", "status": "passed", "start": 1704355359267, "stop": 1704355359267}], "start": 1704355359267, "stop": 1704355359339}
\ No newline at end of file
{"uuid": "50b5c129-3364-4988-8bf2-764afb584b9f", "befores": [{"name": "case_title", "status": "passed", "start": 1704355351112, "stop": 1704355351112}], "start": 1704355351112, "stop": 1704355351208}
\ No newline at end of file
{"uuid": "de315ec1-cdef-4ab0-8879-f0c4fdfb3d76", "befores": [{"name": "case_req", "status": "passed", "start": 1704355352532, "stop": 1704355352532}], "start": 1704355352532, "stop": 1704355352599}
\ No newline at end of file
{"uuid": "a3b6aa18-8f60-4601-9792-b0a7bd9bc40f", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355357691, "stop": 1704355357691}], "start": 1704355357691, "stop": 1704355357873}
\ No newline at end of file
{"uuid": "471f3517-354b-4c9b-ad4f-a7b296556a62", "befores": [{"name": "case_req", "status": "passed", "start": 1704355351674, "stop": 1704355351674}], "start": 1704355351674, "stop": 1704355351741}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTcsImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTcsImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTcsImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTcsImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTcsImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "9074af2e-91d5-47d1-9e4d-075a85f5a4bb", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355352463, "stop": 1704355352463}], "start": 1704355352463, "stop": 1704355352525}
\ No newline at end of file
{"uuid": "f142872c-090a-42a5-8ceb-743cec6cbba3", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355362068, "stop": 1704355362068}], "start": 1704355362068, "stop": 1704355362213}
\ No newline at end of file
{"uuid": "e33caa46-ef8d-44ad-8732-25f67ad123ad", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355360150, "stop": 1704355360150}], "start": 1704355360150, "stop": 1704355360216}
\ No newline at end of file
{"name": "反向用例-username错误", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210400>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x00000146483F9100>('state')\nE + where <built-in method get of dict object at 0x00000146483F9100> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg', ...} = <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 0x0000014648210400>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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"}, "attachments": [{"name": "log", "source": "56a74d86-3de6-456d-895b-4a0a0aeb6133-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username错误'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'Post'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'Admin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355359421, "stop": 1704355359476, "uuid": "ebb12334-3ef8-44bf-b425-8a59c773c90a", "historyId": "dfd4b38575c49a6fabc1cc90c1baa4fd", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "a12bc7e5-6937-41aa-b42f-d1ba11b193cb", "befores": [{"name": "case_data", "status": "passed", "start": 1704355356583, "stop": 1704355356583}], "start": 1704355356583, "stop": 1704355356720}
\ No newline at end of file
{"uuid": "48d295fc-f8b3-4d99-8a7e-40a0e41aba7f", "befores": [{"name": "case_url", "status": "passed", "start": 1704355360150, "stop": 1704355360150}], "start": 1704355360150, "stop": 1704355360218}
\ No newline at end of file
{"uuid": "aef2a08d-cf81-4c64-89a6-a7c90562bcf6", "befores": [{"name": "case_url", "status": "passed", "start": 1704355355377, "stop": 1704355355377}], "start": 1704355355377, "stop": 1704355355448}
\ No newline at end of file
{"uuid": "cfa8f4e4-019a-4510-b2bd-4cf3330ac306", "befores": [{"name": "api_name", "status": "passed", "start": 1704355354847, "stop": 1704355354847}], "start": 1704355354847, "stop": 1704355354905}
\ No newline at end of file
{"uuid": "9687dbf5-9b91-4223-8d7f-ae90f1bcc64d", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355354169, "stop": 1704355354169}], "start": 1704355354169, "stop": 1704355354226}
\ No newline at end of file
{"uuid": "5d5a56ad-b9ad-4a2c-bacd-c0f0bc10e3d6", "befores": [{"name": "case_title", "status": "passed", "start": 1704355360791, "stop": 1704355360791}], "start": 1704355360791, "stop": 1704355360979}
\ No newline at end of file
{"uuid": "db5cd34d-aac4-4cd9-8568-410d178074d3", "befores": [{"name": "case_data", "status": "passed", "start": 1704355359345, "stop": 1704355359345}], "start": 1704355359345, "stop": 1704355359413}
\ No newline at end of file
{"uuid": "1f681ee2-22da-4ae0-8b6c-012b768b8a8b", "befores": [{"name": "case_url", "status": "passed", "start": 1704355352678, "stop": 1704355352678}], "start": 1704355352678, "stop": 1704355352741}
\ No newline at end of file
{"uuid": "3929ec43-72d8-43ba-88ef-a73580b1ddb9", "befores": [{"name": "api_name", "status": "passed", "start": 1704355358975, "stop": 1704355358975}], "start": 1704355358975, "stop": 1704355359078}
\ No newline at end of file
{"uuid": "6587285b-bf0b-47fb-8f76-1bc9b9afd56e", "befores": [{"name": "case_url", "status": "passed", "start": 1704355357880, "stop": 1704355357880}], "start": 1704355357880, "stop": 1704355357944}
\ No newline at end of file
{"uuid": "d17568a9-5ba4-432b-97e9-085f23cef7c3", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355351412, "stop": 1704355351412}], "start": 1704355351412, "stop": 1704355351520}
\ No newline at end of file
{"uuid": "0780447e-2c49-4e16-b6ca-de1504b42b6b", "befores": [{"name": "case_title", "status": "passed", "start": 1704355353908, "stop": 1704355353908}], "start": 1704355353908, "stop": 1704355354097}
\ No newline at end of file
{"uuid": "a741ccb7-feb4-4bee-81dc-f980a1d67cf2", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355358870, "stop": 1704355358870}], "start": 1704355358870, "stop": 1704355358967}
\ No newline at end of file
{"uuid": "a0ed1746-4cef-4fb9-b0d4-c785906a0be4", "befores": [{"name": "update_key", "status": "passed", "start": 1704355355378, "stop": 1704355355378}], "start": 1704355355378, "stop": 1704355355446}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x00000146482105E0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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 0x00000146482105E0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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"}, "attachments": [{"name": "log", "source": "d4405cdb-c3f7-4bf8-8dc9-1fbaa307437a-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'添加组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'message': '添加组织成功'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"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": "update_key", "value": "'demId'"}], "start": 1704355361178, "stop": 1704355361356, "uuid": "e6c22a2c-624d-471d-abe1-bf553bc8d0f2", "historyId": "ece10c98bbcc6add49fa944897380ee5", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "04051d24-57a4-49d8-9b24-4ed4223c47eb", "befores": [{"name": "case_url", "status": "passed", "start": 1704355360982, "stop": 1704355360982}], "start": 1704355360982, "stop": 1704355361173}
\ No newline at end of file
{"name": "反向用例-username过短", "status": "passed", "attachments": [{"name": "log", "source": "caf6bba4-22b0-4efc-a671-88bac3f514ac-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "4d701f89-475b-4987-a763-4f6ca27efb75-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username过短'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'a', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355351114, "stop": 1704355351204, "uuid": "a843c43d-5a1f-4845-8d9d-34badaec1a3e", "historyId": "4ab1de8429096cb7e36882efd6fa3c10", "testCaseId": "f2fe01aec482200ae6914516b7a8fbd5", "fullName": "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM系统-老王"}, {"name": "parentSuite", "value": "test_case.test_mr_wang"}, {"name": "suite", "value": "test_mr_wang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_wang.test_mr_wang"}]}
\ No newline at end of file
{"uuid": "1db8064e-1ea7-4d79-9ed0-8f2f9b0b0a24", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355357950, "stop": 1704355357950}], "start": 1704355357950, "stop": 1704355358009}
\ No newline at end of file
{"uuid": "af9ad094-a910-46e2-9936-afee09b461a5", "befores": [{"name": "case_url", "status": "passed", "start": 1704355351528, "stop": 1704355351528}], "start": 1704355351528, "stop": 1704355351597}
\ No newline at end of file
{"uuid": "13c38686-2438-4295-a593-d62fa5c77741", "befores": [{"name": "module_name", "status": "passed", "start": 1704355351954, "stop": 1704355351954}], "start": 1704355351954, "stop": 1704355352058}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F2220>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F2220>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_wang\\test_mr_wang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "cabf2f5c-2056-442d-a7d6-96a85fd0b1df-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'添加组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'message': '添加组织成功'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"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": "update_key", "value": "'demId'"}], "start": 1704355353112, "stop": 1704355353296, "uuid": "31ed0455-6ff9-41f1-91ce-69d220d1361e", "historyId": "613ba371a5db8527b11f6809098d080c", "testCaseId": "f2fe01aec482200ae6914516b7a8fbd5", "fullName": "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "添加组织"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老王"}, {"name": "parentSuite", "value": "test_case.test_mr_wang"}, {"name": "suite", "value": "test_mr_wang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_wang.test_mr_wang"}]}
\ No newline at end of file
{"uuid": "cb63c5e1-685c-4917-8038-20d4533a207d", "befores": [{"name": "case_title", "status": "passed", "start": 1704355356729, "stop": 1704355356729}], "start": 1704355356729, "stop": 1704355356915}
\ No newline at end of file
{"uuid": "18e784fa-1f57-4baa-8059-1ed3049191fd", "befores": [{"name": "api_name", "status": "passed", "start": 1704355350983, "stop": 1704355350983}], "start": 1704355350983, "stop": 1704355351047}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F20A0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x00000146483E3E40>('message')\nE + where <built-in method get of dict object at 0x00000146483E3E40> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw', 'userAttrs': {}, ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F20A0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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_mr_wang\\test_mr_wang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "95ce7bc2-9187-40a1-996d-337f1e12f604-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'刷新token'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'GET'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/refresh'"}, {"name": "case_mime", "value": "None"}, {"name": "case_data", "value": "None"}, {"name": "expect_data", "value": "{'message': '刷新成功'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355352679, "stop": 1704355352732, "uuid": "a9ee748a-c68d-4f61-8c40-9df89365e0cb", "historyId": "e6893b1d9c9092641cd9ee0f38b3c02e", "testCaseId": "f2fe01aec482200ae6914516b7a8fbd5", "fullName": "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "刷新token"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老王"}, {"name": "parentSuite", "value": "test_case.test_mr_wang"}, {"name": "suite", "value": "test_mr_wang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_wang.test_mr_wang"}]}
\ No newline at end of file
{"uuid": "7d73216e-9af7-4be6-933c-755c73160cc6", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355361834, "stop": 1704355361834}], "start": 1704355361834, "stop": 1704355361890}
\ No newline at end of file
{"uuid": "5f6d415b-27e3-4e7b-b65c-91c36d46aa69", "befores": [{"name": "update_key", "status": "passed", "start": 1704355360299, "stop": 1704355360299}], "start": 1704355360299, "stop": 1704355360360}
\ No newline at end of file
{"uuid": "325a2c50-54b7-4e2c-b857-4b2aceaef1a9", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355356441, "stop": 1704355356441}], "start": 1704355356441, "stop": 1704355356504}
\ No newline at end of file
{"uuid": "fa76d3aa-945b-4a8f-b8af-c3ed87b0007c", "befores": [{"name": "case_title", "status": "passed", "start": 1704355355377, "stop": 1704355355377}], "start": 1704355355377, "stop": 1704355355449}
\ No newline at end of file
{"uuid": "411d2cfd-eddb-4e73-8dc6-f65bf0f1a91e", "befores": [{"name": "case_title", "status": "passed", "start": 1704355353109, "stop": 1704355353109}], "start": 1704355353109, "stop": 1704355353311}
\ No newline at end of file
{"uuid": "d5306e49-737f-435c-a17e-c59f9ea1d973", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355351315, "stop": 1704355351315}], "start": 1704355351315, "stop": 1704355351402}
\ No newline at end of file
{"uuid": "a57d351c-16ac-4d10-a795-16f2289fe727", "befores": [{"name": "case_data", "status": "passed", "start": 1704355359655, "stop": 1704355359655}], "start": 1704355359655, "stop": 1704355359751}
\ No newline at end of file
{"uuid": "cfeb2b27-21cd-45b9-8048-1a003c900f4a", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355358645, "stop": 1704355358645}], "start": 1704355358645, "stop": 1704355358703}
\ No newline at end of file
{"uuid": "1f7b855e-8ba1-4374-b455-cabd09e0d04d", "befores": [{"name": "case_req", "status": "passed", "start": 1704355361178, "stop": 1704355361178}], "start": 1704355361178, "stop": 1704355361366}
\ No newline at end of file
{"uuid": "4ccba192-c78d-4211-aadb-fc4c9d957afd", "befores": [{"name": "case_url", "status": "passed", "start": 1704355352532, "stop": 1704355352532}], "start": 1704355352532, "stop": 1704355352599}
\ No newline at end of file
{"uuid": "a488fd00-69b2-4f66-8873-5fc57f85b42b", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355351745, "stop": 1704355351745}], "start": 1704355351745, "stop": 1704355351811}
\ No newline at end of file
{"name": "反向用例-password为空", "status": "passed", "attachments": [{"name": "log", "source": "a8d64ad3-f556-4e95-a41f-ef89b3a08ee7-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "10cab5fc-b906-4d35-8359-76efdbeecf7f-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-password为空'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': ''}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355351893, "stop": 1704355351943, "uuid": "de341067-bc1c-48d4-8f66-690db8e90086", "historyId": "e2d113932fef6762a6a95d31124bca2a", "testCaseId": "f2fe01aec482200ae6914516b7a8fbd5", "fullName": "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM系统-老王"}, {"name": "parentSuite", "value": "test_case.test_mr_wang"}, {"name": "suite", "value": "test_mr_wang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_wang.test_mr_wang"}]}
\ No newline at end of file
{"uuid": "5b2b106e-d3f8-4700-a52f-3a871d0ccd52", "befores": [{"name": "case_url", "status": "passed", "start": 1704355356918, "stop": 1704355356918}], "start": 1704355356918, "stop": 1704355357108}
\ No newline at end of file
{"uuid": "bca1fc63-ed4f-43bb-a3d2-2390f9df29fc", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355361178, "stop": 1704355361178}], "start": 1704355361178, "stop": 1704355361365}
\ No newline at end of file
{"uuid": "6213cc5f-e8ae-4b1d-99db-c60b87764c58", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355352393, "stop": 1704355352393}], "start": 1704355352393, "stop": 1704355352456}
\ No newline at end of file
{"uuid": "71b8e053-b46b-4fff-a904-ea7569ba3831", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355360791, "stop": 1704355360791}], "start": 1704355360791, "stop": 1704355360975}
\ No newline at end of file
{"uuid": "86dea5ff-6350-4639-834a-d62eb5d22f70", "befores": [{"name": "case_level", "status": "passed", "start": 1704355355263, "stop": 1704355355263}], "start": 1704355355263, "stop": 1704355355373}
\ No newline at end of file
{"uuid": "2c3e5291-9c0a-42d9-a28d-4da576054807", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355351892, "stop": 1704355351892}], "start": 1704355351892, "stop": 1704355351949}
\ No newline at end of file
{"name": "反向用例-username过长", "status": "passed", "attachments": [{"name": "log", "source": "a788cbe1-55a7-4fdf-8514-207549280c9b-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "b752931a-993d-49a7-aa97-6ae23ca2dd32-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username过长'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'adminadminadminadminadminadminadminadminadminadmin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355355069, "stop": 1704355355157, "uuid": "62053235-be7f-4e36-8f55-7bcc7a2cbba2", "historyId": "b6a0b764ba9e85158653bc5839cdfcda", "testCaseId": "f5214cfe7df9b72974e18e3d7310b5ff", "fullName": "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM系统-老张"}, {"name": "parentSuite", "value": "test_case.test_mr_zhang"}, {"name": "suite", "value": "test_mr_zhang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_zhang.test_mr_zhang"}]}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "c220b078-1447-4427-b8ba-7a4d1d04f2a3", "befores": [{"name": "case_title", "status": "passed", "start": 1704355358869, "stop": 1704355358869}], "start": 1704355358869, "stop": 1704355358969}
\ No newline at end of file
{"uuid": "5c21cade-712d-4a85-b3a1-e823161a9df4", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355355165, "stop": 1704355355165}], "start": 1704355355165, "stop": 1704355355256}
\ No newline at end of file
{"uuid": "46b2a84c-61c9-41db-9df7-1ae190ecf121", "befores": [{"name": "module_name", "status": "passed", "start": 1704355352462, "stop": 1704355352462}], "start": 1704355352462, "stop": 1704355352529}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x00000146481FFD80>('message')\nE + where <built-in method get of dict object at 0x00000146481FFD80> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...} = <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 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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"}, "attachments": [{"name": "log", "source": "0ac7ce0d-bfef-41c1-8de1-7548dc8ef2ab-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'刷新token'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'GET'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/refresh'"}, {"name": "case_mime", "value": "None"}, {"name": "case_data", "value": "None"}, {"name": "expect_data", "value": "{'message': '刷新成功'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355360300, "stop": 1704355360351, "uuid": "1f121a76-a372-413e-8891-b2d013dd076f", "historyId": "8a137f95ba4a68bf446ff9343a1271df", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "刷新token"}, {"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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "93c6d4a6-b15f-4962-9201-a279f1b18b3d", "befores": [{"name": "case_req", "status": "passed", "start": 1704355358193, "stop": 1704355358193}], "start": 1704355358193, "stop": 1704355358339}
\ No newline at end of file
{"uuid": "fde1f1b3-673a-4956-9e15-53df23e38765", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355353514, "stop": 1704355353514}], "start": 1704355353514, "stop": 1704355353701}
\ No newline at end of file
{"uuid": "b3851106-f424-4f1d-ae97-5cba4e9f3a53", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355351955, "stop": 1704355351955}], "start": 1704355351955, "stop": 1704355352053}
\ No newline at end of file
{"uuid": "6d80521b-4b71-4e72-8ece-97e5f136cc63", "befores": [{"name": "case_data", "status": "passed", "start": 1704355356007, "stop": 1704355356007}], "start": 1704355356007, "stop": 1704355356105}
\ No newline at end of file
{"uuid": "33a99de1-7ff6-4c70-8a59-f5b25e8a6c37", "befores": [{"name": "case_url", "status": "passed", "start": 1704355355068, "stop": 1704355355068}], "start": 1704355355068, "stop": 1704355355160}
\ No newline at end of file
{"uuid": "45492717-2045-4ff7-97b9-4f6a3b2b9886", "befores": [{"name": "case_url", "status": "passed", "start": 1704355360222, "stop": 1704355360222}], "start": 1704355360222, "stop": 1704355360294}
\ No newline at end of file
{"uuid": "a6da25ee-1591-402a-ac74-55626c4ab1af", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355353514, "stop": 1704355353514}], "start": 1704355353514, "stop": 1704355353702}
\ No newline at end of file
{"uuid": "2f0f6eab-bc49-43bf-a7d6-b76291ea9572", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355354169, "stop": 1704355354169}], "start": 1704355354169, "stop": 1704355354225}
\ No newline at end of file
{"uuid": "f6e683c3-4368-44a5-a5e9-6392a2981acb", "befores": [{"name": "case_url", "status": "passed", "start": 1704355356511, "stop": 1704355356511}], "start": 1704355356511, "stop": 1704355356577}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "3111aa19-5938-466e-aedc-afc5d42875b7", "befores": [{"name": "update_key", "status": "passed", "start": 1704355355742, "stop": 1704355355742}], "start": 1704355355742, "stop": 1704355355793}
\ No newline at end of file
{"uuid": "1bcc448a-3e57-4b26-aa9b-a4a201a8b7b5", "befores": [{"name": "case_level", "status": "passed", "start": 1704355351954, "stop": 1704355351954}], "start": 1704355351954, "stop": 1704355352057}
\ No newline at end of file
{"name": "正向用例-username和password正确", "status": "passed", "attachments": [{"name": "log", "source": "025f808d-c535-47b6-a88e-21f6175407f3-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "e5e9dfe3-a149-486f-b923-529992ca7bc1-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'正向用例-username和password正确'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'username': '超级管理员', 'account': 'admin', 'loginStatus': True}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355358645, "stop": 1704355358701, "uuid": "abbe7f22-2df3-4b15-bf9b-20ab76221c57", "historyId": "5cf0ca9bfb84009eee04be6339e4cd3d", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "fe82133b-c6f5-4700-8edf-c149b9c55c4a", "befores": [{"name": "case_data", "status": "passed", "start": 1704355360078, "stop": 1704355360078}], "start": 1704355360078, "stop": 1704355360143}
\ No newline at end of file
{"uuid": "88494964-3bd2-41a4-855e-60c581db20a9", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355356007, "stop": 1704355356007}], "start": 1704355356007, "stop": 1704355356104}
\ No newline at end of file
{"uuid": "679bd4ba-be65-440f-9755-00f6f3d03f97", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355355263, "stop": 1704355355263}], "start": 1704355355263, "stop": 1704355355371}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTQsImlhdCI6MTcwNDM1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTQsImlhdCI6MTcwNDM1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTQsImlhdCI6MTcwNDM1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTQsImlhdCI6MTcwNDM1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTQsImlhdCI6MTcwNDM1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "d4d073e1-6660-4b01-9683-8229a85dabe9", "befores": [{"name": "case_url", "status": "passed", "start": 1704355355741, "stop": 1704355355741}], "start": 1704355355741, "stop": 1704355355796}
\ No newline at end of file
{"uuid": "55d0ac7d-7e29-4721-a857-a8db1e87d112", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355356511, "stop": 1704355356511}], "start": 1704355356511, "stop": 1704355356576}
\ No newline at end of file
{"uuid": "263aeebe-1411-433d-9264-56e242cf0e5f", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355355263, "stop": 1704355355263}], "start": 1704355355263, "stop": 1704355355372}
\ No newline at end of file
{"uuid": "69417de0-e255-44cb-8b29-3decc22dc6f6", "befores": [{"name": "case_data", "status": "passed", "start": 1704355357113, "stop": 1704355357113}], "start": 1704355357113, "stop": 1704355357305}
\ No newline at end of file
{"uuid": "3d8e2156-6b80-44b7-97f8-3c70749a9c61", "befores": [{"name": "update_key", "status": "passed", "start": 1704355361899, "stop": 1704355361899}], "start": 1704355361899, "stop": 1704355361958}
\ No newline at end of file
{"uuid": "ae0401e7-2231-4956-a308-aabbf9195c1f", "befores": [{"name": "case_level", "status": "passed", "start": 1704355356918, "stop": 1704355356918}], "start": 1704355356918, "stop": 1704355357109}
\ No newline at end of file
{"uuid": "c4d917f3-62c7-4a71-8a46-d2afb89867fa", "befores": [{"name": "update_key", "status": "passed", "start": 1704355351114, "stop": 1704355351114}], "start": 1704355351114, "stop": 1704355351204}
\ No newline at end of file
{"uuid": "81042e69-1290-4d05-bf65-208f7feeb8ed", "befores": [{"name": "case_req", "status": "passed", "start": 1704355352605, "stop": 1704355352605}], "start": 1704355352605, "stop": 1704355352672}
\ No newline at end of file
{"uuid": "a6ebf63e-c8a6-4113-97b3-7d6fe0aa7a7e", "befores": [{"name": "case_data", "status": "passed", "start": 1704355356302, "stop": 1704355356302}], "start": 1704355356302, "stop": 1704355356367}
\ No newline at end of file
{"uuid": "79878f0d-3920-447a-8fe8-e044f4b08234", "befores": [{"name": "module_name", "status": "passed", "start": 1704355359197, "stop": 1704355359197}], "start": 1704355359197, "stop": 1704355359265}
\ No newline at end of file
{"uuid": "1e2ec85c-b5cf-4ff3-a4b1-92eafc098340", "befores": [{"name": "update_key", "status": "passed", "start": 1704355356007, "stop": 1704355356007}], "start": 1704355356007, "stop": 1704355356104}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F2220>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F2220>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_wang\\test_mr_wang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "19c27252-eef8-4a48-8bbe-d545adb4773e-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'添加组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'message': '添加组织成功'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"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": "update_key", "value": "'demId'"}], "start": 1704355353514, "stop": 1704355353690, "uuid": "901211dc-484c-42ec-9b21-64b02c4def4e", "historyId": "613ba371a5db8527b11f6809098d080c", "testCaseId": "f2fe01aec482200ae6914516b7a8fbd5", "fullName": "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "添加组织"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老王"}, {"name": "parentSuite", "value": "test_case.test_mr_wang"}, {"name": "suite", "value": "test_mr_wang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_wang.test_mr_wang"}]}
\ No newline at end of file
{"uuid": "a86ec23a-3e7b-430c-9432-925b5e69441b", "befores": [{"name": "case_req", "status": "passed", "start": 1704355356729, "stop": 1704355356729}], "start": 1704355356729, "stop": 1704355356914}
\ No newline at end of file
{"uuid": "ea86c257-8fb0-4c02-b384-59f765425af4", "befores": [{"name": "module_name", "status": "passed", "start": 1704355360150, "stop": 1704355360150}], "start": 1704355360150, "stop": 1704355360219}
\ No newline at end of file
{"name": "反向用例-username错误", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x00000146482F4D80>('state')\nE + where <built-in method get of dict object at 0x00000146482F4D80> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...ksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...ksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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_mr_wang\\test_mr_wang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "54540c23-3711-4d33-b5d7-409f2ffd4198-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username错误'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'Post'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'Admin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355351528, "stop": 1704355351584, "uuid": "b9109941-b377-4c7c-b101-82b47a87433f", "historyId": "33c30115cd8531c11c15042badbdacb8", "testCaseId": "f2fe01aec482200ae6914516b7a8fbd5", "fullName": "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM系统-老王"}, {"name": "parentSuite", "value": "test_case.test_mr_wang"}, {"name": "suite", "value": "test_mr_wang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_wang.test_mr_wang"}]}
\ No newline at end of file
{"uuid": "b9d80443-7557-4bed-bb23-5cc33cd010b4", "befores": [{"name": "case_url", "status": "passed", "start": 1704355356232, "stop": 1704355356232}], "start": 1704355356232, "stop": 1704355356297}
\ No newline at end of file
{"uuid": "23f07e76-63fb-4964-a50e-ce05aaf3113d", "befores": [{"name": "case_url", "status": "passed", "start": 1704355359595, "stop": 1704355359595}], "start": 1704355359595, "stop": 1704355359650}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x000001464820C2B0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_zhang\\test_mr_zhang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x000001464820C2B0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_zhang\\test_mr_zhang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "c615a378-e8fb-4465-b55e-ed33bce2d948-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'添加组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'message': '添加组织成功'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"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": "update_key", "value": "'demId'"}], "start": 1704355357113, "stop": 1704355357296, "uuid": "e038c290-12dc-46b7-ac65-8c4851bd442c", "historyId": "9413f08791152b96a98cbf3a971b572a", "testCaseId": "f5214cfe7df9b72974e18e3d7310b5ff", "fullName": "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "添加组织"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老张"}, {"name": "parentSuite", "value": "test_case.test_mr_zhang"}, {"name": "suite", "value": "test_mr_zhang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_zhang.test_mr_zhang"}]}
\ No newline at end of file
{"uuid": "1c5e8878-41de-49ea-8ca9-666bc43455e4", "befores": [{"name": "case_title", "status": "passed", "start": 1704355351527, "stop": 1704355351527}], "start": 1704355351527, "stop": 1704355351598}
\ No newline at end of file
{"uuid": "a003a813-4283-46f5-8321-53210d0368f7", "befores": [{"name": "case_req", "status": "passed", "start": 1704355355526, "stop": 1704355355526}], "start": 1704355355526, "stop": 1704355355594}
\ No newline at end of file
{"uuid": "a626bedc-ccbe-4795-b671-21d3faa994a3", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355352678, "stop": 1704355352678}], "start": 1704355352678, "stop": 1704355352740}
\ No newline at end of file
{"uuid": "0c96f813-db5d-4601-af78-c03950df6010", "befores": [{"name": "case_level", "status": "passed", "start": 1704355352393, "stop": 1704355352393}], "start": 1704355352393, "stop": 1704355352458}
\ No newline at end of file
{"uuid": "4aab5a44-05dc-4507-be0b-6b83af59d831", "befores": [{"name": "api_name", "status": "passed", "start": 1704355355068, "stop": 1704355355068}], "start": 1704355355068, "stop": 1704355355161}
\ No newline at end of file
{"uuid": "ca97a0e3-3646-4cb7-830a-808aacd488e0", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355354908, "stop": 1704355354908}], "start": 1704355354908, "stop": 1704355354958}
\ No newline at end of file
{"uuid": "dcdea858-60b4-4098-aac7-85a9074f1ec7", "befores": [{"name": "case_url", "status": "passed", "start": 1704355359655, "stop": 1704355359655}], "start": 1704355359655, "stop": 1704355359752}
\ No newline at end of file
{"uuid": "f7e3f8d6-ad59-4e94-a251-b97f3d41ad26", "befores": [{"name": "api_name", "status": "passed", "start": 1704355355801, "stop": 1704355355801}], "start": 1704355355801, "stop": 1704355355901}
\ No newline at end of file
{"uuid": "bcce5ab2-0822-4ace-ae16-1c485b690cc9", "befores": [{"name": "case_title", "status": "passed", "start": 1704355353711, "stop": 1704355353711}], "start": 1704355353711, "stop": 1704355353904}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "2f68718b-04d3-4de1-9ffa-24f690027a61", "befores": [{"name": "case_url", "status": "passed", "start": 1704355358710, "stop": 1704355358710}], "start": 1704355358710, "stop": 1704355358764}
\ No newline at end of file
{"uuid": "a15b9009-c5e6-4f06-a7e3-9b3a3f9b83ff", "befores": [{"name": "case_url", "status": "passed", "start": 1704355352605, "stop": 1704355352605}], "start": 1704355352605, "stop": 1704355352671}
\ No newline at end of file
{"uuid": "987be48b-0056-4497-bf29-a9d166b0112b", "befores": [{"name": "case_title", "status": "passed", "start": 1704355359197, "stop": 1704355359197}], "start": 1704355359197, "stop": 1704355359264}
\ No newline at end of file
{"uuid": "daf478d9-a9ec-4207-8512-cfd96bc7577c", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355359758, "stop": 1704355359758}], "start": 1704355359758, "stop": 1704355359858}
\ No newline at end of file
{"uuid": "0c0d1f5c-6705-4cca-a146-21c65755f226", "befores": [{"name": "case_req", "status": "passed", "start": 1704355352462, "stop": 1704355352463}], "start": 1704355352462, "stop": 1704355352527}
\ No newline at end of file
{"uuid": "48a030b4-b973-465a-82b0-351fc11c7b0d", "befores": [{"name": "case_req", "status": "passed", "start": 1704355351602, "stop": 1704355351602}], "start": 1704355351602, "stop": 1704355351669}
\ No newline at end of file
{"uuid": "c49c4136-023a-40b1-b01d-8b15e372faa7", "befores": [{"name": "case_data", "status": "passed", "start": 1704355358091, "stop": 1704355358091}], "start": 1704355358091, "stop": 1704355358186}
\ No newline at end of file
{"uuid": "3550f7e8-cdcc-4ca3-949a-162d432fa927", "befores": [{"name": "api_name", "status": "passed", "start": 1704355359595, "stop": 1704355359595}], "start": 1704355359594, "stop": 1704355359651}
\ No newline at end of file
{"uuid": "6485a662-d4c0-48bb-a3f5-65fe5e245c51", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355350984, "stop": 1704355350984}], "start": 1704355350984, "stop": 1704355351043}
\ No newline at end of file
{"uuid": "26f4d292-54e4-40d9-9211-b22f9f1ae768", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355356729, "stop": 1704355356729}], "start": 1704355356729, "stop": 1704355356911}
\ No newline at end of file
{"uuid": "5369db86-6377-4dc0-9357-8a297451721e", "befores": [{"name": "update_key", "status": "passed", "start": 1704355356511, "stop": 1704355356511}], "start": 1704355356511, "stop": 1704355356574}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x000001464820C2B0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_zhang\\test_mr_zhang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x000001464820C2B0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_zhang\\test_mr_zhang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "c56dec53-11a3-4c2f-a486-f35b9f045eb0-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'添加组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'code': 'test_58_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'message': '添加组织成功'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"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": "update_key", "value": "'demId'"}], "start": 1704355356730, "stop": 1704355356905, "uuid": "91216e22-b390-43fc-9ecd-fd519e9e1183", "historyId": "9413f08791152b96a98cbf3a971b572a", "testCaseId": "f5214cfe7df9b72974e18e3d7310b5ff", "fullName": "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "添加组织"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老张"}, {"name": "parentSuite", "value": "test_case.test_mr_zhang"}, {"name": "suite", "value": "test_mr_zhang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_zhang.test_mr_zhang"}]}
\ No newline at end of file
{"uuid": "657acb90-81c8-45a8-9e89-f53a00598161", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355354102, "stop": 1704355354102}], "start": 1704355354102, "stop": 1704355354161}
\ No newline at end of file
{"uuid": "86fa14b8-ec58-4f30-acaf-c73d7984306d", "befores": [{"name": "update_key", "status": "passed", "start": 1704355354102, "stop": 1704355354102}], "start": 1704355354102, "stop": 1704355354161}
\ No newline at end of file
{"uuid": "473c8164-9eca-4334-a188-551f1a84105e", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355351213, "stop": 1704355351213}], "start": 1704355351213, "stop": 1704355351306}
\ No newline at end of file
{"uuid": "32663ead-980a-465a-9a00-60670b047577", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355352749, "stop": 1704355352749}], "start": 1704355352749, "stop": 1704355352888}
\ No newline at end of file
{"uuid": "bdfd838c-2a3a-4f6d-82ad-430749f7e0ea", "befores": [{"name": "case_level", "status": "passed", "start": 1704355358709, "stop": 1704355358709}], "start": 1704355358709, "stop": 1704355358765}
\ No newline at end of file
{"uuid": "c0985ece-f72e-46b6-94fd-1289147c91c0", "befores": [{"name": "case_title", "status": "passed", "start": 1704355357312, "stop": 1704355357312}], "start": 1704355357312, "stop": 1704355357498}
\ No newline at end of file
{"uuid": "c3fdf130-8398-44bb-b7a0-17e2fdb2fe4d", "befores": [{"name": "module_name", "status": "passed", "start": 1704355355667, "stop": 1704355355668}], "start": 1704355355667, "stop": 1704355355739}
\ No newline at end of file
{"uuid": "b1fbf088-eb02-4499-9c4d-be0a5e4b6253", "befores": [{"name": "update_key", "status": "passed", "start": 1704355352533, "stop": 1704355352533}], "start": 1704355352533, "stop": 1704355352596}
\ No newline at end of file
{"uuid": "fa10912f-00b4-4bb7-a866-20d9ecdfa6dd", "befores": [{"name": "case_title", "status": "passed", "start": 1704355360078, "stop": 1704355360078}], "start": 1704355360078, "stop": 1704355360145}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "956bb888-23f8-40f6-9868-f948f1b1feff", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355360078, "stop": 1704355360078}], "start": 1704355360078, "stop": 1704355360141}
\ No newline at end of file
{"uuid": "d8b352c1-ec1a-4c36-9565-f27a04564a0c", "befores": [{"name": "case_data", "status": "passed", "start": 1704355360791, "stop": 1704355360791}], "start": 1704355360791, "stop": 1704355360977}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTMsImlhdCI6MTcwNDM1NTM1M30.iIqaIOC216iH_yvZSAPlt1gw_EQ4v_y9KyH8b1ptKn4i44OHQ5oDvteaHEjrLkfvKfqf3CrYotXQkRoryaguZA","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "630bf425-518b-44cb-b5b8-d4215ce3bc88", "befores": [{"name": "update_key", "status": "passed", "start": 1704355353514, "stop": 1704355353514}], "start": 1704355353514, "stop": 1704355353700}
\ No newline at end of file
{"uuid": "eab344e4-20ee-40ae-90db-7314f38b3d8c", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355358193, "stop": 1704355358193}], "start": 1704355358193, "stop": 1704355358338}
\ No newline at end of file
{"uuid": "83d28aa1-4e25-4153-8d9c-a4b8ee6b7201", "befores": [{"name": "case_data", "status": "passed", "start": 1704355361758, "stop": 1704355361758}], "start": 1704355361758, "stop": 1704355361817}
\ No newline at end of file
{"uuid": "802be972-2144-45cd-a148-d3f3a9147a74", "befores": [{"name": "update_key", "status": "passed", "start": 1704355358710, "stop": 1704355358711}], "start": 1704355358710, "stop": 1704355358761}
\ No newline at end of file
{"uuid": "438ea863-3640-439e-b45e-65446ef28e00", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355354847, "stop": 1704355354847}], "start": 1704355354847, "stop": 1704355354901}
\ No newline at end of file
{"uuid": "b406bcaa-3d5c-459c-9af9-a5fb397777e6", "befores": [{"name": "case_level", "status": "passed", "start": 1704355351112, "stop": 1704355351112}], "start": 1704355351112, "stop": 1704355351208}
\ No newline at end of file
{"uuid": "175d7561-8495-4ec9-a68e-daac8b252a4c", "befores": [{"name": "case_url", "status": "passed", "start": 1704355354307, "stop": 1704355354307}], "start": 1704355354307, "stop": 1704355354405}
\ No newline at end of file
{"name": "反向用例-username错误", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x00000146481BD970>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x0000014648410780>('state')\nE + where <built-in method get of dict object at 0x0000014648410780> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...MsImlhdCI6MTcwNDM1NTM1M30.iIqaIOC216iH_yvZSAPlt1gw_EQ4v_y9KyH8b1ptKn4i44OHQ5oDvteaHEjrLkfvKfqf3CrYotXQkRoryaguZA', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...MsImlhdCI6MTcwNDM1NTM1M30.iIqaIOC216iH_yvZSAPlt1gw_EQ4v_y9KyH8b1ptKn4i44OHQ5oDvteaHEjrLkfvKfqf3CrYotXQkRoryaguZA', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_zhang\\test_mr_zhang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x00000146481BD970>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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_mr_zhang\\test_mr_zhang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "ae3ef3a8-9813-4201-9035-35f7fae574b2-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username错误'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'Post'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'Admin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355355527, "stop": 1704355355581, "uuid": "c40eb1f1-bf60-4e55-ab22-217cd969095c", "historyId": "39b12c49be6a4cf5dc4e214d57da103d", "testCaseId": "f5214cfe7df9b72974e18e3d7310b5ff", "fullName": "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM系统-老张"}, {"name": "parentSuite", "value": "test_case.test_mr_zhang"}, {"name": "suite", "value": "test_mr_zhang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_zhang.test_mr_zhang"}]}
\ No newline at end of file
{"uuid": "e8f8f808-4e56-417c-98e6-8ecb79e0a114", "befores": [{"name": "case_level", "status": "passed", "start": 1704355351674, "stop": 1704355351674}], "start": 1704355351674, "stop": 1704355351741}
\ No newline at end of file
{"uuid": "881e036a-01f4-4cf8-a120-e8b9f33c960f", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355359267, "stop": 1704355359267}], "start": 1704355359267, "stop": 1704355359337}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "01e55aa4-7af6-422d-9657-f67524549c5d-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "08636e51-6ac7-4825-be0b-fd823224c5d0-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'添加维度'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'code': 'test58_dem_abc', 'description': '测试维度-58', 'isDefault': 0, 'name': '测试维度-58'}"}, {"name": "expect_data", "value": "{'message': '添加维度成功!'}"}, {"name": "sql_type", "value": "'delete'"}, {"name": "sql_data", "value": "' delete from uc_demension WHERE `CODE_`=\"test58_dem_abc\";'"}, {"name": "update_key", "value": "None"}], "start": 1704355352750, "stop": 1704355352886, "uuid": "587fa80d-90f8-4e15-9f05-77ff1f800479", "historyId": "4bddcbc18c1233929a37bb95c1a1b89a", "testCaseId": "f2fe01aec482200ae6914516b7a8fbd5", "fullName": "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "添加维度"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老王"}, {"name": "parentSuite", "value": "test_case.test_mr_wang"}, {"name": "suite", "value": "test_mr_wang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_wang.test_mr_wang"}]}
\ No newline at end of file
{"uuid": "4658882a-89fe-481d-8fa1-4eb3c426163a", "befores": [{"name": "case_data", "status": "passed", "start": 1704355360368, "stop": 1704355360368}], "start": 1704355360368, "stop": 1704355360431}
\ No newline at end of file
{"uuid": "5d02276d-a0a1-4bc6-870a-be927997b05f", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355354909, "stop": 1704355354909}], "start": 1704355354909, "stop": 1704355354957}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTcsImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTcsImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "6f0fcaad-9a73-40a4-af3b-bd186b34009b", "befores": [{"name": "update_key", "status": "passed", "start": 1704355357313, "stop": 1704355357313}], "start": 1704355357313, "stop": 1704355357494}
\ No newline at end of file
{"uuid": "d6dc409e-08f6-4036-ba8d-c19c3b2d7264", "befores": [{"name": "case_data", "status": "passed", "start": 1704355351315, "stop": 1704355351315}], "start": 1704355351315, "stop": 1704355351404}
\ No newline at end of file
{"uuid": "8ff3183b-8036-49df-99d2-1eb74a30cb0e", "befores": [{"name": "module_name", "status": "passed", "start": 1704355359865, "stop": 1704355359866}], "start": 1704355359865, "stop": 1704355359965}
\ No newline at end of file
{"uuid": "21a493ae-2a29-4bb4-968e-f23901cfe100", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355355742, "stop": 1704355355742}], "start": 1704355355742, "stop": 1704355355795}
\ No newline at end of file
{"uuid": "6276ae0a-3ee3-434a-a796-a08e57817ce9", "befores": [{"name": "module_name", "status": "passed", "start": 1704355357950, "stop": 1704355357950}], "start": 1704355357950, "stop": 1704355358012}
\ No newline at end of file
{"uuid": "894885af-6993-4380-a74c-927c7f0182ef", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355357691, "stop": 1704355357691}], "start": 1704355357691, "stop": 1704355357873}
\ No newline at end of file
{"uuid": "1bceea81-f104-43c1-99c3-0bdcb344d578", "befores": [{"name": "api_name", "status": "passed", "start": 1704355358869, "stop": 1704355358869}], "start": 1704355358869, "stop": 1704355358969}
\ No newline at end of file
{"uuid": "a150a55d-28fe-48d4-81cc-1e25870597e2", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355356302, "stop": 1704355356302}], "start": 1704355356302, "stop": 1704355356367}
\ No newline at end of file
{"uuid": "b528645c-7647-4037-91e4-bbf214e2d038", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355352165, "stop": 1704355352165}], "start": 1704355352165, "stop": 1704355352264}
\ No newline at end of file
{"uuid": "5cea48c1-f0b6-4e11-8285-c0f7bb84f29e", "befores": [{"name": "case_req", "status": "passed", "start": 1704355357312, "stop": 1704355357312}], "start": 1704355357312, "stop": 1704355357497}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "97c8c9d2-e5e3-4a4e-bb30-ead1ec6422ea", "befores": [{"name": "api_name", "status": "passed", "start": 1704355361966, "stop": 1704355361966}], "start": 1704355361966, "stop": 1704355362064}
\ No newline at end of file
{"uuid": "09457732-09ec-4000-a09c-f2315e8bcf2d", "befores": [{"name": "case_url", "status": "passed", "start": 1704355352900, "stop": 1704355352900}], "start": 1704355352900, "stop": 1704355353094}
\ No newline at end of file
{"uuid": "d6d1641b-94de-4ea0-baad-7e39eb5342d7", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355360299, "stop": 1704355360299}], "start": 1704355360299, "stop": 1704355360362}
\ No newline at end of file
{"uuid": "72206cfb-4164-40e7-bad6-535f7369506b", "befores": [{"name": "module_name", "status": "passed", "start": 1704355352060, "stop": 1704355352060}], "start": 1704355352060, "stop": 1704355352161}
\ No newline at end of file
{"uuid": "7046d11e-87bf-4507-9e4f-99e2efe9d0dc", "befores": [{"name": "module_name", "status": "passed", "start": 1704355355741, "stop": 1704355355741}], "start": 1704355355741, "stop": 1704355355799}
\ No newline at end of file
{"uuid": "fae99db5-1049-48c5-a15d-eb345d9defc7", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355355263, "stop": 1704355355263}], "start": 1704355355263, "stop": 1704355355371}
\ No newline at end of file
{"uuid": "b28e18ba-699c-444b-adb8-b25e881fa015", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355357880, "stop": 1704355357880}], "start": 1704355357880, "stop": 1704355357942}
\ No newline at end of file
{"uuid": "a93a8507-f2f9-4a0f-a8d2-a010457cb64e", "befores": [{"name": "module_name", "status": "passed", "start": 1704355359969, "stop": 1704355359969}], "start": 1704355359969, "stop": 1704355360075}
\ No newline at end of file
{"uuid": "3311f4c6-8242-4085-bb29-02ebb78643d1", "befores": [{"name": "case_title", "status": "passed", "start": 1704355352060, "stop": 1704355352060}], "start": 1704355352060, "stop": 1704355352160}
\ No newline at end of file
{"uuid": "e0809b43-0499-4a2f-a64f-8b2a08199ce9", "befores": [{"name": "case_level", "status": "passed", "start": 1704355352281, "stop": 1704355352281}], "start": 1704355352281, "stop": 1704355352388}
\ No newline at end of file
{"uuid": "dbc79ba0-bf0f-4606-99fb-7c27cf780666", "befores": [{"name": "case_level", "status": "passed", "start": 1704355359082, "stop": 1704355359082}], "start": 1704355359082, "stop": 1704355359193}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTQsImlhdCI6MTcwNDM1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTQsImlhdCI6MTcwNDM1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTQsImlhdCI6MTcwNDM1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTQsImlhdCI6MTcwNDM1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "7d02c1ee-0f57-4d1d-aa07-b1b92f59a002", "befores": [{"name": "case_title", "status": "passed", "start": 1704355351745, "stop": 1704355351745}], "start": 1704355351745, "stop": 1704355351816}
\ No newline at end of file
{"uuid": "575fc483-6b12-4f40-9c4b-e1956fdfba7d", "befores": [{"name": "api_name", "status": "passed", "start": 1704355361177, "stop": 1704355361177}], "start": 1704355361177, "stop": 1704355361367}
\ No newline at end of file
{"uuid": "2981298a-ed29-47a0-85a8-d9b3dc6d598f", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355358769, "stop": 1704355358769}], "start": 1704355358769, "stop": 1704355358862}
\ No newline at end of file
{"uuid": "c3505e71-6f4f-4ed8-add4-f97502ebce30", "befores": [{"name": "case_title", "status": "passed", "start": 1704355359420, "stop": 1704355359420}], "start": 1704355359420, "stop": 1704355359489}
\ No newline at end of file
{"uuid": "3093d344-f3c3-4490-ae83-40c89108b80f", "befores": [{"name": "module_name", "status": "passed", "start": 1704355359757, "stop": 1704355359757}], "start": 1704355359757, "stop": 1704355359861}
\ No newline at end of file
{"name": "反向用例-username错误", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x000001464837C8C0>('state')\nE + where <built-in method get of dict object at 0x000001464837C8C0> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...ksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...ksImlhdCI6MTcwNDM1NTM0OX0.vlqKtTRw2aGvOdsjztfJ24jCyiEcUA7XQ_C-1Mf3uiiSdp1I2z3q5Hy1y-giyCPcvYTseBXOhqQhNvzVM3lxiQ', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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_mr_wang\\test_mr_wang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "daacd93b-f339-463e-8ccb-f491a6106f0a-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username错误'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'Post'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'Admin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355351413, "stop": 1704355351509, "uuid": "ee3235c6-dcce-4c22-ac01-df99576a0933", "historyId": "33c30115cd8531c11c15042badbdacb8", "testCaseId": "f2fe01aec482200ae6914516b7a8fbd5", "fullName": "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM系统-老王"}, {"name": "parentSuite", "value": "test_case.test_mr_wang"}, {"name": "suite", "value": "test_mr_wang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_wang.test_mr_wang"}]}
\ No newline at end of file
{"uuid": "7d196d96-1ca3-4879-af82-79364163198c", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355356007, "stop": 1704355356007}], "start": 1704355356007, "stop": 1704355356105}
\ No newline at end of file
{"uuid": "8727326f-c962-4aff-b158-5a477a7ccfda", "befores": [{"name": "case_title", "status": "passed", "start": 1704355352164, "stop": 1704355352164}], "start": 1704355352164, "stop": 1704355352266}
\ No newline at end of file
{"uuid": "af32e7fc-5642-4830-9287-1c21e5c731e2", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355360368, "stop": 1704355360368}], "start": 1704355360368, "stop": 1704355360430}
\ No newline at end of file
{"uuid": "13f5a148-3a27-478d-bea5-e41cddea9899", "befores": [{"name": "case_level", "status": "passed", "start": 1704355355741, "stop": 1704355355741}], "start": 1704355355741, "stop": 1704355355797}
\ No newline at end of file
{"uuid": "2a37a071-9a5e-4f05-a5ad-87c856040377", "befores": [{"name": "case_req", "status": "passed", "start": 1704355355377, "stop": 1704355355377}], "start": 1704355355377, "stop": 1704355355449}
\ No newline at end of file
{"uuid": "4d5ca817-3af1-43bb-a4b7-30137571e987", "befores": [{"name": "update_key", "status": "passed", "start": 1704355352678, "stop": 1704355352678}], "start": 1704355352678, "stop": 1704355352739}
\ No newline at end of file
{"uuid": "a7d35033-cc34-437b-bf5c-d633b8925450", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355351315, "stop": 1704355351315}], "start": 1704355351315, "stop": 1704355351403}
\ No newline at end of file
{"uuid": "1fa07bf8-80a5-4458-a3ea-7e86ca84e5db", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355359197, "stop": 1704355359197}], "start": 1704355359197, "stop": 1704355359260}
\ No newline at end of file
{"uuid": "f50d96b5-cb75-4a1f-a5a9-f49e9878bedc", "befores": [{"name": "api_name", "status": "passed", "start": 1704355355452, "stop": 1704355355452}], "start": 1704355355452, "stop": 1704355355523}
\ No newline at end of file
{"uuid": "eddf2140-2d3a-46e8-9258-c267f7833dc1", "befores": [{"name": "case_data", "status": "passed", "start": 1704355359970, "stop": 1704355359970}], "start": 1704355359970, "stop": 1704355360072}
\ No newline at end of file
{"uuid": "7f6a39d2-6c22-40c8-bd45-002b47bd3af4", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355355378, "stop": 1704355355378}], "start": 1704355355378, "stop": 1704355355447}
\ No newline at end of file
{"uuid": "55c15893-ea03-4e63-b55a-7eb05afbb47f", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355354908, "stop": 1704355354908}], "start": 1704355354908, "stop": 1704355354960}
\ No newline at end of file
{"uuid": "96e81d3e-a5ed-411b-b920-ffac3949c62b", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355352605, "stop": 1704355352605}], "start": 1704355352605, "stop": 1704355352670}
\ No newline at end of file
{"uuid": "98e4d4a5-0969-4135-a2d9-3b60da4d09d8", "befores": [{"name": "case_data", "status": "passed", "start": 1704355361898, "stop": 1704355361898}], "start": 1704355361898, "stop": 1704355361960}
\ No newline at end of file
{"uuid": "c44aec13-115c-4d7b-bec6-40b09b969e70", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355360299, "stop": 1704355360299}], "start": 1704355360299, "stop": 1704355360363}
\ No newline at end of file
{"uuid": "e1f3ab07-bb4f-425a-be0f-efc97280453d", "befores": [{"name": "case_data", "status": "passed", "start": 1704355351603, "stop": 1704355351603}], "start": 1704355351603, "stop": 1704355351668}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x000001464820C2B0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_zhang\\test_mr_zhang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x000001464820C2B0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_zhang\\test_mr_zhang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "631be695-9b07-4c61-b25b-bcf4a27226d0-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'添加组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'code': 'test_58_org', 'demId': '1742818793148661760', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'message': '添加组织成功'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"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": "update_key", "value": "'demId'"}], "start": 1704355357691, "stop": 1704355357864, "uuid": "cd63cb3a-99a3-4a72-9a43-a86199226983", "historyId": "9413f08791152b96a98cbf3a971b572a", "testCaseId": "f5214cfe7df9b72974e18e3d7310b5ff", "fullName": "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "添加组织"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老张"}, {"name": "parentSuite", "value": "test_case.test_mr_zhang"}, {"name": "suite", "value": "test_mr_zhang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_zhang.test_mr_zhang"}]}
\ No newline at end of file
{"uuid": "1b45f3e1-fb83-46a5-935e-56a4b6df88ce", "befores": [{"name": "case_req", "status": "passed", "start": 1704355353315, "stop": 1704355353315}], "start": 1704355353315, "stop": 1704355353508}
\ No newline at end of file
{"uuid": "99435ed0-0d71-4557-85ee-f65da141a0a2", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355355668, "stop": 1704355355668}], "start": 1704355355668, "stop": 1704355355736}
\ No newline at end of file
{"uuid": "e83289c3-f67e-4120-b5ea-b66074f0ae60", "befores": [{"name": "update_key", "status": "passed", "start": 1704355358091, "stop": 1704355358091}], "start": 1704355358091, "stop": 1704355358184}
\ No newline at end of file
{"name": "反向用例-username错误", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210400>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x00000146484CC340>('state')\nE + where <built-in method get of dict object at 0x00000146484CC340> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg', ...} = <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 0x0000014648210400>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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"}, "attachments": [{"name": "log", "source": "6fcf9d86-ef4f-47ad-b5a1-83aa982f53bb-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username错误'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'Post'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'Admin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355359198, "stop": 1704355359252, "uuid": "553858e2-4a41-4adc-aecd-ae12a195ceb5", "historyId": "dfd4b38575c49a6fabc1cc90c1baa4fd", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"name": "反向用例-password为特殊字符", "status": "passed", "attachments": [{"name": "log", "source": "b4554574-ada9-49dd-86f6-c6afa2f994c5-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "925f2deb-4300-4bc5-9ff9-aea13a0ad6b1-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-password为特殊字符'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': '♠♣▣▤▥▦▩◘◙◈'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355356007, "stop": 1704355356103, "uuid": "0ef0e593-64a9-4619-964b-24d135bb6639", "historyId": "57b541c51bdec3b8592712d0b209474a", "testCaseId": "f5214cfe7df9b72974e18e3d7310b5ff", "fullName": "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM系统-老张"}, {"name": "parentSuite", "value": "test_case.test_mr_zhang"}, {"name": "suite", "value": "test_mr_zhang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_zhang.test_mr_zhang"}]}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F20A0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x0000014648396400>('message')\nE + where <built-in method get of dict object at 0x0000014648396400> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw', 'userAttrs': {}, ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F20A0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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_mr_wang\\test_mr_wang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "7c9d5851-617a-4c6b-88d2-4b9bfa2ae74b-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'刷新token'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'GET'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/refresh'"}, {"name": "case_mime", "value": "None"}, {"name": "case_data", "value": "None"}, {"name": "expect_data", "value": "{'message': '刷新成功'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355352394, "stop": 1704355352447, "uuid": "e9d6fa2d-f2d0-4349-831c-fd1e081fcae4", "historyId": "e6893b1d9c9092641cd9ee0f38b3c02e", "testCaseId": "f2fe01aec482200ae6914516b7a8fbd5", "fullName": "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "刷新token"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老王"}, {"name": "parentSuite", "value": "test_case.test_mr_wang"}, {"name": "suite", "value": "test_mr_wang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_wang.test_mr_wang"}]}
\ No newline at end of file
{"uuid": "1411b1bf-8756-461b-b679-794cfc67239d", "befores": [{"name": "case_req", "status": "passed", "start": 1704355353513, "stop": 1704355353513}], "start": 1704355353513, "stop": 1704355353705}
\ No newline at end of file
{"uuid": "4f58a1e1-566f-4224-a7da-12a08fcf82d1", "befores": [{"name": "update_key", "status": "passed", "start": 1704355355803, "stop": 1704355355803}], "start": 1704355355803, "stop": 1704355355897}
\ No newline at end of file
{"uuid": "fe8a7c3f-f761-48f1-97f2-5a64e36be53b", "befores": [{"name": "case_title", "status": "passed", "start": 1704355354168, "stop": 1704355354168}], "start": 1704355354168, "stop": 1704355354229}
\ No newline at end of file
{"uuid": "0f357254-b51d-4792-8186-87982513c9b0", "befores": [{"name": "case_data", "status": "passed", "start": 1704355351819, "stop": 1704355351819}], "start": 1704355351819, "stop": 1704355351884}
\ No newline at end of file
{"uuid": "891da623-f0bb-4c25-aa1e-2b3920ec8407", "befores": [{"name": "case_url", "status": "passed", "start": 1704355358015, "stop": 1704355358015}], "start": 1704355358015, "stop": 1704355358085}
\ No newline at end of file
{"uuid": "966219c0-21d3-453c-9cc9-cee1f3586598", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355359267, "stop": 1704355359267}], "start": 1704355359267, "stop": 1704355359336}
\ No newline at end of file
{"uuid": "5806704e-6ca2-4a9b-9d97-a59594f7df62", "befores": [{"name": "update_key", "status": "passed", "start": 1704355355526, "stop": 1704355355526}], "start": 1704355355526, "stop": 1704355355589}
\ No newline at end of file
{"uuid": "bdae3481-16c7-4767-a917-946e2e7a6ab6", "befores": [{"name": "api_name", "status": "passed", "start": 1704355358644, "stop": 1704355358644}], "start": 1704355358644, "stop": 1704355358706}
\ No newline at end of file
{"uuid": "bf9a5282-b92b-4fb1-8e64-8fcf8c658ccc", "befores": [{"name": "case_data", "status": "passed", "start": 1704355361371, "stop": 1704355361371}], "start": 1704355361371, "stop": 1704355361560}
\ No newline at end of file
{"uuid": "c5e5f96f-8263-48ce-b3c7-17d47a425967", "befores": [{"name": "case_req", "status": "passed", "start": 1704355356006, "stop": 1704355356006}], "start": 1704355356006, "stop": 1704355356106}
\ No newline at end of file
{"uuid": "39294794-d956-475d-8cdd-eec884415e89", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355351675, "stop": 1704355351675}], "start": 1704355351675, "stop": 1704355351739}
\ No newline at end of file
{"uuid": "44e64f83-200e-40bb-93da-6f5477b2bee8", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355360982, "stop": 1704355360982}], "start": 1704355360982, "stop": 1704355361173}
\ No newline at end of file
{"uuid": "8e12e139-7596-44ed-b22b-0aa8000345ed", "befores": [{"name": "case_title", "status": "passed", "start": 1704355352900, "stop": 1704355352900}], "start": 1704355352900, "stop": 1704355353105}
\ No newline at end of file
{"uuid": "e786e0ab-d8cb-49db-9d58-fe78d384f380", "befores": [{"name": "case_req", "status": "passed", "start": 1704355361371, "stop": 1704355361371}], "start": 1704355361371, "stop": 1704355361561}
\ No newline at end of file
{"uuid": "eb63eb55-fcc4-4db7-b3ff-3c7ed0efbafc", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355354847, "stop": 1704355354847}], "start": 1704355354847, "stop": 1704355354902}
\ No newline at end of file
{"uuid": "19c04dba-c217-4a76-9e6a-9d58fe9ce42c", "befores": [{"name": "case_req", "status": "passed", "start": 1704355356112, "stop": 1704355356112}], "start": 1704355356112, "stop": 1704355356226}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x00000146482446C0>('message')\nE + where <built-in method get of dict object at 0x00000146482446C0> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...} = <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 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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"}, "attachments": [{"name": "log", "source": "a7d7a6c6-c52a-4ea5-a3a1-31d3749ff2a6-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'刷新token'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'GET'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/refresh'"}, {"name": "case_mime", "value": "None"}, {"name": "case_data", "value": "None"}, {"name": "expect_data", "value": "{'message': '刷新成功'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355360369, "stop": 1704355360421, "uuid": "5f1fc9e1-5ea1-4f94-9df7-a6e02aefa7ae", "historyId": "8a137f95ba4a68bf446ff9343a1271df", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "刷新token"}, {"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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "c118a03b-f9dc-432b-bf46-6385f1a9c5ae", "befores": [{"name": "case_url", "status": "passed", "start": 1704355358769, "stop": 1704355358769}], "start": 1704355358769, "stop": 1704355358864}
\ No newline at end of file
{"uuid": "0798a621-2b45-4e23-b287-baac6693e32f", "befores": [{"name": "case_level", "status": "passed", "start": 1704355362067, "stop": 1704355362067}], "start": 1704355362067, "stop": 1704355362217}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTAsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTAsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "8f86f3dc-6a60-42cd-8fa2-20a24dab9e11", "befores": [{"name": "module_name", "status": "passed", "start": 1704355355165, "stop": 1704355355165}], "start": 1704355355165, "stop": 1704355355259}
\ No newline at end of file
{"uuid": "dfe62954-4d0c-4917-9fa1-d49ff075c216", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355360438, "stop": 1704355360438}], "start": 1704355360438, "stop": 1704355360575}
\ No newline at end of file
{"uuid": "a71478dd-eace-4c62-babb-d1245634fc1b", "befores": [{"name": "case_data", "status": "passed", "start": 1704355354235, "stop": 1704355354235}], "start": 1704355354235, "stop": 1704355354299}
\ No newline at end of file
{"uuid": "7862f512-710e-4e88-8d1e-9725733212d9", "befores": [{"name": "module_name", "status": "passed", "start": 1704355359267, "stop": 1704355359267}], "start": 1704355359267, "stop": 1704355359341}
\ No newline at end of file
{"uuid": "f647dc65-8faa-448d-aceb-a2436ac833f5", "befores": [{"name": "case_req", "status": "passed", "start": 1704355357112, "stop": 1704355357112}], "start": 1704355357112, "stop": 1704355357306}
\ No newline at end of file
{"uuid": "92bc4ce3-81ed-41fe-9a0d-660a5c30dcb5", "befores": [{"name": "module_name", "status": "passed", "start": 1704355361966, "stop": 1704355361966}], "start": 1704355361966, "stop": 1704355362064}
\ No newline at end of file
{"uuid": "f8cca596-4daa-438d-b6ad-2cb4498f855e", "befores": [{"name": "case_data", "status": "passed", "start": 1704355351892, "stop": 1704355351892}], "start": 1704355351892, "stop": 1704355351948}
\ No newline at end of file
{"uuid": "8860b364-4acb-45ee-bfe4-45f7b76fdc91", "befores": [{"name": "update_key", "status": "passed", "start": 1704355359655, "stop": 1704355359655}], "start": 1704355359655, "stop": 1704355359750}
\ No newline at end of file
{"uuid": "48a47a25-630d-41c2-b424-fea82ad8d892", "befores": [{"name": "case_req", "status": "passed", "start": 1704355358975, "stop": 1704355358975}], "start": 1704355358975, "stop": 1704355359076}
\ No newline at end of file
{"uuid": "6100e676-df5b-47a8-bbd6-1d715dadee10", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355359344, "stop": 1704355359344}], "start": 1704355359344, "stop": 1704355359413}
\ No newline at end of file
{"uuid": "11d86b40-968a-4998-8312-cdcc17fbf4e5", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355356441, "stop": 1704355356441}], "start": 1704355356441, "stop": 1704355356504}
\ No newline at end of file
{"uuid": "cee086b2-daab-47fb-8c1d-852abc51f3b6", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355359595, "stop": 1704355359595}], "start": 1704355359595, "stop": 1704355359648}
\ No newline at end of file
{"uuid": "4deecaeb-3925-43f9-a57d-326e9510cbd2", "befores": [{"name": "module_name", "status": "passed", "start": 1704355355597, "stop": 1704355355597}], "start": 1704355355597, "stop": 1704355355665}
\ No newline at end of file
{"uuid": "ec5bf080-66d0-4982-9255-f4dae6cb05d5", "befores": [{"name": "case_url", "status": "passed", "start": 1704355356441, "stop": 1704355356441}], "start": 1704355356441, "stop": 1704355356505}
\ No newline at end of file
{"uuid": "2be26b8e-b295-455c-a1aa-31c02e94d883", "befores": [{"name": "case_url", "status": "passed", "start": 1704355359082, "stop": 1704355359082}], "start": 1704355359082, "stop": 1704355359192}
\ No newline at end of file
{"uuid": "0fafa37f-38c0-46dc-b492-1cb59ff7ae58", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355357880, "stop": 1704355357880}], "start": 1704355357880, "stop": 1704355357943}
\ No newline at end of file
{"uuid": "2d4ed1b4-100b-4bac-a794-6a7b2bdb1b37", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355355741, "stop": 1704355355741}], "start": 1704355355741, "stop": 1704355355796}
\ No newline at end of file
{"uuid": "ed7d8ae9-9f29-4d32-a223-1ef6b9074f8d", "befores": [{"name": "case_level", "status": "passed", "start": 1704355351528, "stop": 1704355351528}], "start": 1704355351528, "stop": 1704355351597}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "a540898d-0c2f-4ae4-b7ca-26a2c87cef65", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355359970, "stop": 1704355359970}], "start": 1704355359970, "stop": 1704355360072}
\ No newline at end of file
{"uuid": "058d2c8c-6a5b-4626-9aba-b719899740ce", "befores": [{"name": "api_name", "status": "passed", "start": 1704355354965, "stop": 1704355354965}], "start": 1704355354965, "stop": 1704355355063}
\ No newline at end of file
{"uuid": "35f4ddcd-f76f-4a5a-a29e-cb3931b81931", "befores": [{"name": "case_req", "status": "passed", "start": 1704355358769, "stop": 1704355358769}], "start": 1704355358769, "stop": 1704355358864}
\ No newline at end of file
{"uuid": "7bcddab7-52d3-4c53-bd80-eba3a7216296", "befores": [{"name": "case_req", "status": "passed", "start": 1704355352900, "stop": 1704355352900}], "start": 1704355352900, "stop": 1704355353104}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "0e8b205e-2198-42e8-938d-7fb2b79c9270-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "86d41efd-c9a2-4efe-9cad-9a2a040b1989-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'保存组织参数'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'post'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams'"}, {"name": "case_mime", "value": "'query|json'"}, {"name": "case_data", "value": "{'query': {'orgCode': 'test_58_org'}, 'json': [{'alias': 'sz', 'value': '999'}]}"}, {"name": "expect_data", "value": "{'state': True, 'message': '保存组织参数成功!'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355361835, "stop": 1704355361888, "uuid": "0ad9f600-15c7-4f15-85f8-18d73f81da9c", "historyId": "609c144ffca008faa731f5a2a1a90e2e", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "62e51630-ece3-450a-a486-7b13971d3ae2", "befores": [{"name": "case_req", "status": "passed", "start": 1704355354234, "stop": 1704355354234}], "start": 1704355354234, "stop": 1704355354301}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x00000146482105E0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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 0x00000146482105E0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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"}, "attachments": [{"name": "log", "source": "70bc778d-ff5d-435c-b889-5d6421c7fb79-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'添加组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'code': 'test_58_org', 'demId': '1742818809330286592', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'message': '添加组织成功'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"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": "update_key", "value": "'demId'"}], "start": 1704355360983, "stop": 1704355361158, "uuid": "14256f5e-fcfb-46f4-9b5c-bbead63bc6b2", "historyId": "ece10c98bbcc6add49fa944897380ee5", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "c51463dc-91f3-4293-8ae3-830ef3c9c371", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355355802, "stop": 1704355355802}], "start": 1704355355802, "stop": 1704355355898}
\ No newline at end of file
{"uuid": "78e16d5f-8efb-4681-9b61-50692db5d7a9", "befores": [{"name": "module_name", "status": "passed", "start": 1704355354847, "stop": 1704355354847}], "start": 1704355354847, "stop": 1704355354905}
\ No newline at end of file
{"uuid": "75c45604-74ba-447f-bd1a-11a0c2d94d57", "befores": [{"name": "api_name", "status": "passed", "start": 1704355359654, "stop": 1704355359654}], "start": 1704355359654, "stop": 1704355359753}
\ No newline at end of file
{"uuid": "d345dbb8-7c89-440a-9ea6-9706df551c87", "befores": [{"name": "case_title", "status": "passed", "start": 1704355359595, "stop": 1704355359595}], "start": 1704355359595, "stop": 1704355359651}
\ No newline at end of file
{"uuid": "3a68f520-2633-42c0-a1d7-2a2384c53f51", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355361758, "stop": 1704355361758}], "start": 1704355361758, "stop": 1704355361817}
\ No newline at end of file
{"uuid": "44262b27-757d-45f1-8d55-5f208699502b", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355351315, "stop": 1704355351315}], "start": 1704355351315, "stop": 1704355351403}
\ No newline at end of file
{"uuid": "ee53904d-e3b2-4de9-91af-07e2965087f8", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355352532, "stop": 1704355352532}], "start": 1704355352532, "stop": 1704355352598}
\ No newline at end of file
{"uuid": "d7af8a22-974e-40d9-9233-5f904cee7ff6", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355358645, "stop": 1704355358645}], "start": 1704355358645, "stop": 1704355358703}
\ No newline at end of file
{"uuid": "6d0030a8-ee17-4416-8753-b97dc65cb66c", "befores": [{"name": "update_key", "status": "passed", "start": 1704355351675, "stop": 1704355351675}], "start": 1704355351675, "stop": 1704355351738}
\ No newline at end of file
{"uuid": "129b94c3-b07d-4f01-a6cb-7a5003659e4d", "befores": [{"name": "case_level", "status": "passed", "start": 1704355360078, "stop": 1704355360078}], "start": 1704355360078, "stop": 1704355360145}
\ No newline at end of file
{"uuid": "55c595c0-328c-423a-8bff-21ab20fae750", "befores": [{"name": "module_name", "status": "passed", "start": 1704355356728, "stop": 1704355356729}], "start": 1704355356728, "stop": 1704355356915}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "1a12d2ef-2c51-4825-994a-ea3720537685-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "a45d0367-2a2b-4d81-86c2-c21d06ff8ef1-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'用户管理'"}, {"name": "api_name", "value": "'添加用户'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/user/v1/user/addUser'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'id': '', 'account': 'laowang', 'address': '', 'email': '', 'fullname': 'laowang', 'mobile': '', 'password': '123456', 'photo': '', 'sex': '', 'status': 1}"}, {"name": "expect_data", "value": "{'state': True, 'message': '用户添加成功!'}"}, {"name": "sql_type", "value": "'delete'"}, {"name": "sql_data", "value": "'delete from uc_user WHERE `ACCOUNT_`=\"laowang\";'"}, {"name": "update_key", "value": "None"}], "start": 1704355358194, "stop": 1704355358335, "uuid": "57f1075e-d7b5-40a3-9ba8-0602b69f4ae4", "historyId": "4fbd199e567aff70114c4071f03e1ac7", "testCaseId": "f5214cfe7df9b72974e18e3d7310b5ff", "fullName": "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "用户管理"}, {"name": "story", "value": "添加用户"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老张"}, {"name": "parentSuite", "value": "test_case.test_mr_zhang"}, {"name": "suite", "value": "test_mr_zhang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_zhang.test_mr_zhang"}]}
\ No newline at end of file
{"uuid": "60444b55-141d-47e3-a6c4-d99085a9c254", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355351315, "stop": 1704355351315}], "start": 1704355351315, "stop": 1704355351404}
\ No newline at end of file
{"uuid": "5d20b3e0-d76d-4336-b928-a0b24f6c09d2", "befores": [{"name": "update_key", "status": "passed", "start": 1704355359494, "stop": 1704355359494}], "start": 1704355359494, "stop": 1704355359574}
\ No newline at end of file
{"uuid": "777c6265-f2e4-4de5-a154-55a8b738d73c", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355351821, "stop": 1704355351821}], "start": 1704355351821, "stop": 1704355351884}
\ No newline at end of file
{"uuid": "92a596ca-1ae9-4d1e-bcf0-eda0b085b646", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355356112, "stop": 1704355356112}], "start": 1704355356112, "stop": 1704355356223}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "af729b32-5734-40ae-a327-b0e473c1e9c7", "befores": [{"name": "case_url", "status": "passed", "start": 1704355351212, "stop": 1704355351212}], "start": 1704355351212, "stop": 1704355351308}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTMsImlhdCI6MTcwNDM1NTM1M30.iIqaIOC216iH_yvZSAPlt1gw_EQ4v_y9KyH8b1ptKn4i44OHQ5oDvteaHEjrLkfvKfqf3CrYotXQkRoryaguZA","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTMsImlhdCI6MTcwNDM1NTM1M30.iIqaIOC216iH_yvZSAPlt1gw_EQ4v_y9KyH8b1ptKn4i44OHQ5oDvteaHEjrLkfvKfqf3CrYotXQkRoryaguZA","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_zhang.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTMsImlhdCI6MTcwNDM1NTM1M30.iIqaIOC216iH_yvZSAPlt1gw_EQ4v_y9KyH8b1ptKn4i44OHQ5oDvteaHEjrLkfvKfqf3CrYotXQkRoryaguZA","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "a6340300-9e19-4ab2-b10f-c653eb46894e", "befores": [{"name": "case_title", "status": "passed", "start": 1704355356232, "stop": 1704355356232}], "start": 1704355356232, "stop": 1704355356298}
\ No newline at end of file
{"uuid": "d7db3acb-163d-4a36-9481-b62327ac91d5", "befores": [{"name": "case_level", "status": "passed", "start": 1704355360222, "stop": 1704355360222}], "start": 1704355360222, "stop": 1704355360295}
\ No newline at end of file
{"uuid": "71b1786f-b5f9-4ff0-9fbb-3ea229313dc4", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355359655, "stop": 1704355359655}], "start": 1704355359655, "stop": 1704355359752}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTcsImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTcsImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTcsImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "98843985-3a35-4c68-a5e0-2d912455895b", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355351675, "stop": 1704355351675}], "start": 1704355351675, "stop": 1704355351739}
\ No newline at end of file
{"uuid": "38291c95-e657-4001-b89f-b67823cdb8a4", "befores": [{"name": "case_title", "status": "passed", "start": 1704355351212, "stop": 1704355351212}], "start": 1704355351212, "stop": 1704355351309}
\ No newline at end of file
{"uuid": "7562daaa-1e12-4302-a169-d2b5b0bb6c27", "befores": [{"name": "case_level", "status": "passed", "start": 1704355360368, "stop": 1704355360368}], "start": 1704355360368, "stop": 1704355360432}
\ No newline at end of file
{'Authorization': 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NDgsImlhdCI6MTcwNDM1NTM0OH0.74lkX0v1gQKKnKXvut_3xcu6vl2HMiFHwyCFDWvJHr7rFSBPn6m-wEq7DDyy0pZWsEhy0X60v25Wkl0xRgBIfw'}
{'Authorization': 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NDgsImlhdCI6MTcwNDM1NTM0OH0.74lkX0v1gQKKnKXvut_3xcu6vl2HMiFHwyCFDWvJHr7rFSBPn6m-wEq7DDyy0pZWsEhy0X60v25Wkl0xRgBIfw'}
{'Authorization': 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NDgsImlhdCI6MTcwNDM1NTM0OH0.74lkX0v1gQKKnKXvut_3xcu6vl2HMiFHwyCFDWvJHr7rFSBPn6m-wEq7DDyy0pZWsEhy0X60v25Wkl0xRgBIfw'}
{'Authorization': 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NDgsImlhdCI6MTcwNDM1NTM0OH0.74lkX0v1gQKKnKXvut_3xcu6vl2HMiFHwyCFDWvJHr7rFSBPn6m-wEq7DDyy0pZWsEhy0X60v25Wkl0xRgBIfw'}
{'Authorization': 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NDgsImlhdCI6MTcwNDM1NTM0OH0.74lkX0v1gQKKnKXvut_3xcu6vl2HMiFHwyCFDWvJHr7rFSBPn6m-wEq7DDyy0pZWsEhy0X60v25Wkl0xRgBIfw'}
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "3b4a4fb3-cb26-46a9-a512-1c3b269bb8a2", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355356374, "stop": 1704355356374}], "start": 1704355356374, "stop": 1704355356435}
\ No newline at end of file
{"uuid": "133a289c-258a-4a22-8f8c-e92234b01f70", "befores": [{"name": "case_data", "status": "passed", "start": 1704355351212, "stop": 1704355351212}], "start": 1704355351212, "stop": 1704355351307}
\ No newline at end of file
{"uuid": "bdccfe52-e283-40e4-bc28-c969de34219e", "befores": [{"name": "case_title", "status": "passed", "start": 1704355357880, "stop": 1704355357880}], "start": 1704355357880, "stop": 1704355357946}
\ No newline at end of file
{"uuid": "d6d7986e-b22e-4d28-89e2-dd1ed9e87e02", "befores": [{"name": "case_data", "status": "passed", "start": 1704355359494, "stop": 1704355359494}], "start": 1704355359494, "stop": 1704355359587}
\ No newline at end of file
{"name": "反向用例-username错误", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x00000146483998C0>('state')\nE + where <built-in method get of dict object at 0x00000146483998C0> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...AsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...AsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481C96D0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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_mr_wang\\test_mr_wang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "4be062f6-e3e9-4ef9-b161-7080056dcca0-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username错误'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'Post'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'Admin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355351821, "stop": 1704355351877, "uuid": "89c1d692-7a75-47c6-86ae-8fc7858f5864", "historyId": "33c30115cd8531c11c15042badbdacb8", "testCaseId": "f2fe01aec482200ae6914516b7a8fbd5", "fullName": "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM系统-老王"}, {"name": "parentSuite", "value": "test_case.test_mr_wang"}, {"name": "suite", "value": "test_mr_wang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_wang.test_mr_wang"}]}
\ No newline at end of file
{"uuid": "3a16a5e7-b362-4520-bde3-9ce57af1504f", "befores": [{"name": "case_title", "status": "passed", "start": 1704355350983, "stop": 1704355350983}], "start": 1704355350983, "stop": 1704355351047}
\ No newline at end of file
{"uuid": "3f4c6d3e-0374-4bed-95bd-54bff89f4fc0", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355358976, "stop": 1704355358976}], "start": 1704355358976, "stop": 1704355359074}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "63e11538-3af6-48e5-a144-65e5c4646c01", "befores": [{"name": "case_url", "status": "passed", "start": 1704355358091, "stop": 1704355358091}], "start": 1704355358091, "stop": 1704355358187}
\ No newline at end of file
{"uuid": "12a678c0-98b7-4513-a73c-28ef2f0b5227", "befores": [{"name": "case_level", "status": "passed", "start": 1704355353109, "stop": 1704355353109}], "start": 1704355353109, "stop": 1704355353310}
\ No newline at end of file
{"uuid": "33417480-4235-46ff-b79e-e11d16a222b5", "befores": [{"name": "update_key", "status": "passed", "start": 1704355355598, "stop": 1704355355598}], "start": 1704355355598, "stop": 1704355355660}
\ No newline at end of file
{"uuid": "fe40bd18-3fe2-4634-bd42-cf55ecd6b99d", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355354847, "stop": 1704355354847}], "start": 1704355354847, "stop": 1704355354903}
\ No newline at end of file
{"uuid": "adcbf077-2ac2-4660-aee5-fc5dcd46f281", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355351819, "stop": 1704355351819}], "start": 1704355351819, "stop": 1704355351886}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "4d538692-551f-4c0a-9d7b-1e93569b3091", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355355453, "stop": 1704355355453}], "start": 1704355355453, "stop": 1704355355519}
\ No newline at end of file
{"uuid": "9286d087-7090-4458-aeb0-9b193a83f249", "befores": [{"name": "case_req", "status": "passed", "start": 1704355351892, "stop": 1704355351892}], "start": 1704355351892, "stop": 1704355351949}
\ No newline at end of file
{"uuid": "5150649b-059f-468d-aed8-854f7477c94d", "befores": [{"name": "case_data", "status": "passed", "start": 1704355354847, "stop": 1704355354847}], "start": 1704355354847, "stop": 1704355354902}
\ No newline at end of file
{"uuid": "79e08aca-b6e9-43e4-b0a9-4b597ac120d3", "befores": [{"name": "update_key", "status": "passed", "start": 1704355353908, "stop": 1704355353908}], "start": 1704355353908, "stop": 1704355354093}
\ No newline at end of file
{"uuid": "e056cd2f-8643-4b40-b830-72f5ab51f773", "befores": [{"name": "case_level", "status": "passed", "start": 1704355359866, "stop": 1704355359866}], "start": 1704355359866, "stop": 1704355359965}
\ No newline at end of file
{"uuid": "ce94a2c2-ccc6-432c-bf57-d23611eea0dc", "befores": [{"name": "case_req", "status": "passed", "start": 1704355359494, "stop": 1704355359494}], "start": 1704355359494, "stop": 1704355359589}
\ No newline at end of file
{"uuid": "369bb954-ae42-4238-9178-3ce8546574f7", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355352165, "stop": 1704355352165}], "start": 1704355352165, "stop": 1704355352262}
\ No newline at end of file
{"uuid": "10451f2f-8393-4ad1-b8b6-e5ee261c6a87", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355357501, "stop": 1704355357501}], "start": 1704355357501, "stop": 1704355357683}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "01bccbfd-617b-467d-a3cd-6817f3483733", "befores": [{"name": "case_title", "status": "passed", "start": 1704355357112, "stop": 1704355357112}], "start": 1704355357112, "stop": 1704355357307}
\ No newline at end of file
{"uuid": "893b93dc-3c34-4775-a290-a2165436399f", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355361565, "stop": 1704355361565}], "start": 1704355361565, "stop": 1704355361751}
\ No newline at end of file
{"uuid": "27c76e5d-6a75-4f9b-89b3-71cfa1766b76", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355351955, "stop": 1704355351955}], "start": 1704355351955, "stop": 1704355352054}
\ No newline at end of file
{"uuid": "dc000a2a-d664-488e-920b-fcdde9debf3f", "befores": [{"name": "module_name", "status": "passed", "start": 1704355360298, "stop": 1704355360298}], "start": 1704355360298, "stop": 1704355360365}
\ No newline at end of file
{"uuid": "2dd5c556-afb9-4dc6-8847-163ba7283388", "befores": [{"name": "module_name", "status": "passed", "start": 1704355356111, "stop": 1704355356111}], "start": 1704355356111, "stop": 1704355356228}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "d0269f9a-fcb9-4a21-8dcb-9019683431ef", "befores": [{"name": "case_url", "status": "passed", "start": 1704355361898, "stop": 1704355361898}], "start": 1704355361898, "stop": 1704355361960}
\ No newline at end of file
{"name": "反向用例-username为空", "status": "passed", "attachments": [{"name": "log", "source": "a1198d5d-b35f-4d85-a1d7-2ca938516865-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "e75d1d6a-e451-4459-a3d7-ae20020cedd7-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username为空'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': '', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355354909, "stop": 1704355354957, "uuid": "26954498-8375-4202-bb90-4bd90afd88dd", "historyId": "b78f5cccbb0d5261b5a9735b181a2f04", "testCaseId": "f5214cfe7df9b72974e18e3d7310b5ff", "fullName": "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM系统-老张"}, {"name": "parentSuite", "value": "test_case.test_mr_zhang"}, {"name": "suite", "value": "test_mr_zhang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_zhang.test_mr_zhang"}]}
\ No newline at end of file
{"uuid": "fb5933ee-8633-4052-8126-a3f385abce65", "befores": [{"name": "case_req", "status": "passed", "start": 1704355353908, "stop": 1704355353908}], "start": 1704355353908, "stop": 1704355354095}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "ee258053-d391-44e6-996e-d124ea1c059b-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "d7f750b3-bf83-4b86-b747-b624a53d44c5-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'删除组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'post'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'"}, {"name": "case_mime", "value": "'text/plain'"}, {"name": "case_data", "value": "'test_58_org'"}, {"name": "expect_data", "value": "{'state': True, 'message': '删除组织成功!'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355361899, "stop": 1704355361958, "uuid": "b95fc09f-7e1f-4c34-970c-e2d8f7be9fe8", "historyId": "7939f6f39767b02470784f964cd3caf0", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "140d3dd8-fa31-4a00-89e2-01f9036abfde", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355355906, "stop": 1704355355906}], "start": 1704355355906, "stop": 1704355355999}
\ No newline at end of file
{"name": "反向用例-username过短", "status": "passed", "attachments": [{"name": "log", "source": "3e55a63c-a259-4637-b398-ff9b8df53e61-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "c8ff21be-3a80-4803-939d-af2252fdb692-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username过短'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'a', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355358770, "stop": 1704355358861, "uuid": "281a0650-1b3b-4a6c-adcd-5d3f4b10660e", "historyId": "524fee58c602e51bb671e53cde950aa7", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "701c37d3-5e88-48b1-a4ad-69a4f70ca863", "befores": [{"name": "case_url", "status": "passed", "start": 1704355356302, "stop": 1704355356302}], "start": 1704355356302, "stop": 1704355356369}
\ No newline at end of file
{"uuid": "71e62b02-44d7-47d1-8076-4be7296fa2da", "befores": [{"name": "case_req", "status": "passed", "start": 1704355361565, "stop": 1704355361565}], "start": 1704355361565, "stop": 1704355361752}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_dependecy_template.test_dependecy_template.TestDependency object at 0x00000146473026A0>\n\n @allure.feature(\"维度管理\")\n @allure.story(\"添加维度\")\n @allure.title(\"正向用例\")\n @allure.severity(\"\")\n @pytest.mark.dependency(depends=[\"TestDependency::test_login\"])\n def test_add_demo(self):\n add_dem_url = \"http://120.46.172.186:8080/api/demension/v1/dem/addDem\"\n add_dem_data = {\n \"code\": \"dem_code_test_528\",\n \"description\": \"测试维度528\",\n \"isDefault\": 0,\n \"name\": \"测试维度518\"\n }\n header = {\"Authorization\": \"Bearer \" + data_dict[\"token\"]}\n print(header)\n res = requests.request(method=\"post\", url=add_dem_url, json=add_dem_data, headers=header)\n # 断言\n try:\n> assert \"成功\" in res.text\nE assert '成功' in '{\"state\":false,\"message\":\"添加维度失败,维度编码【dem_code_test_528】在系统中已存在!\",\"value\":\"\"}'\nE + where '{\"state\":false,\"message\":\"添加维度失败,维度编码【dem_code_test_528】在系统中已存在!\",\"value\":\"\"}' = <Response [200]>.text\n\ntest_case\\test_dependecy_template\\test_dependecy_template.py:60: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_dependecy_template.test_dependecy_template.TestDependency object at 0x00000146473026A0>\n\n @allure.feature(\"维度管理\")\n @allure.story(\"添加维度\")\n @allure.title(\"正向用例\")\n @allure.severity(\"\")\n @pytest.mark.dependency(depends=[\"TestDependency::test_login\"])\n def test_add_demo(self):\n add_dem_url = \"http://120.46.172.186:8080/api/demension/v1/dem/addDem\"\n add_dem_data = {\n \"code\": \"dem_code_test_528\",\n \"description\": \"测试维度528\",\n \"isDefault\": 0,\n \"name\": \"测试维度518\"\n }\n header = {\"Authorization\": \"Bearer \" + data_dict[\"token\"]}\n print(header)\n res = requests.request(method=\"post\", url=add_dem_url, json=add_dem_data, headers=header)\n # 断言\n try:\n assert \"成功\" in res.text\n except AssertionError:\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_dependecy_template\\test_dependecy_template.py:62: AssertionError"}, "attachments": [{"name": "stdout", "source": "efa3c8cc-a52a-4eaa-a552-ef4e1851ca2d-attachment.txt", "type": "text/plain"}], "start": 1704355350385, "stop": 1704355350473, "uuid": "a5b04dbd-b602-47a6-b2ce-08663f5b21dc", "historyId": "8721a2d64cab6ba6f324c88ca9e788fa", "testCaseId": "8721a2d64cab6ba6f324c88ca9e788fa", "fullName": "test_case.test_dependecy_template.test_dependecy_template.TestDependency#test_add_demo", "labels": [{"name": "story", "value": "添加维度"}, {"name": "feature", "value": "维度管理"}, {"name": "epic", "value": "BPM系统依赖"}, {"name": "severity", "value": "高"}, {"name": "tag", "value": "dependency(depends=['TestDependency::test_login'])"}, {"name": "parentSuite", "value": "test_case.test_dependecy_template"}, {"name": "suite", "value": "test_dependecy_template"}, {"name": "subSuite", "value": "TestDependency"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_dependecy_template.test_dependecy_template"}]}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "9496d61a-c105-4ad4-bed8-004b48e1bc16", "befores": [{"name": "update_key", "status": "passed", "start": 1704355351528, "stop": 1704355351528}], "start": 1704355351528, "stop": 1704355351594}
\ No newline at end of file
{"uuid": "e24de284-d168-4bf9-8952-53b9451c2be8", "befores": [{"name": "case_req", "status": "passed", "start": 1704355354411, "stop": 1704355354411}], "start": 1704355354411, "stop": 1704355354555}
\ No newline at end of file
{"uuid": "9824f742-619e-4321-abdb-2c9fb1ca23b8", "befores": [{"name": "update_key", "status": "passed", "start": 1704355361371, "stop": 1704355361371}], "start": 1704355361371, "stop": 1704355361558}
\ No newline at end of file
{"uuid": "93f2c684-e4ff-485a-95d9-ad88b2508b2c", "befores": [{"name": "case_level", "status": "passed", "start": 1704355357880, "stop": 1704355357880}], "start": 1704355357880, "stop": 1704355357945}
\ No newline at end of file
{"uuid": "2f743de0-4fa5-49df-a5f8-cc46f9aa473b", "befores": [{"name": "module_name", "status": "passed", "start": 1704355358869, "stop": 1704355358869}], "start": 1704355358869, "stop": 1704355358970}
\ No newline at end of file
{"uuid": "7b048c06-0774-40c0-aad6-c849fdcd12d4", "befores": [{"name": "module_name", "status": "passed", "start": 1704355360077, "stop": 1704355360077}], "start": 1704355360077, "stop": 1704355360146}
\ No newline at end of file
{"uuid": "de72766d-79a6-4f77-b6f7-5648cc0e8b3b", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355358710, "stop": 1704355358710}], "start": 1704355358710, "stop": 1704355358763}
\ No newline at end of file
{"uuid": "97a9450b-901e-4fc4-8222-8d2ea7a3b23f", "befores": [{"name": "case_level", "status": "passed", "start": 1704355354307, "stop": 1704355354307}], "start": 1704355354307, "stop": 1704355354407}
\ No newline at end of file
{"uuid": "37a3e8ee-26ee-4efd-acdd-f1406e4c1060", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355354966, "stop": 1704355354966}], "start": 1704355354966, "stop": 1704355355060}
\ No newline at end of file
{"uuid": "2067bd46-c671-4f3b-9f79-aedc05408210", "befores": [{"name": "case_level", "status": "passed", "start": 1704355352749, "stop": 1704355352749}], "start": 1704355352749, "stop": 1704355352892}
\ No newline at end of file
{"uuid": "32cd9076-fcaf-4cfd-9233-5b55cf0a5bdd", "befores": [{"name": "update_key", "status": "passed", "start": 1704355355668, "stop": 1704355355668}], "start": 1704355355668, "stop": 1704355355733}
\ No newline at end of file
{"uuid": "d0bacdc8-75e6-422f-9e5d-1707839b3eac", "befores": [{"name": "case_title", "status": "passed", "start": 1704355359267, "stop": 1704355359267}], "start": 1704355359267, "stop": 1704355359340}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "18e0b992-9482-4ff8-bc50-17342cc5714a", "befores": [{"name": "case_data", "status": "passed", "start": 1704355351955, "stop": 1704355351955}], "start": 1704355351955, "stop": 1704355352054}
\ No newline at end of file
{"uuid": "9e54e22d-5d1c-42d8-9a61-db58482301db", "befores": [{"name": "case_req", "status": "passed", "start": 1704355354847, "stop": 1704355354847}], "start": 1704355354847, "stop": 1704355354903}
\ No newline at end of file
{"uuid": "c53500c5-624d-46a3-afc8-5285df8a6c0c", "befores": [{"name": "case_req", "status": "passed", "start": 1704355352281, "stop": 1704355352281}], "start": 1704355352281, "stop": 1704355352388}
\ No newline at end of file
{"uuid": "a8692281-fe1d-4cca-b423-56fad0d7cfb2", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355361834, "stop": 1704355361835}], "start": 1704355361834, "stop": 1704355361890}
\ No newline at end of file
{"uuid": "be081063-c3a1-4eeb-b981-a2ff70bb899b", "befores": [{"name": "update_key", "status": "passed", "start": 1704355351412, "stop": 1704355351412}], "start": 1704355351412, "stop": 1704355351519}
\ No newline at end of file
{"name": "反向用例-username过长", "status": "passed", "attachments": [{"name": "log", "source": "e166246d-e099-40d3-b230-d69ff1f2f123-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "8125bde8-141d-4f75-b706-700904e2d608-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username过长'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'adminadminadminadminadminadminadminadminadminadmin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355358870, "stop": 1704355358964, "uuid": "3aad65d2-b978-402c-bbf4-173c981d873b", "historyId": "a3232bdbd26fa2dd9641a5ad5c4e77ca", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "2da6670d-0ed8-4d0b-9ebe-2fc3080be320", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355354102, "stop": 1704355354102}], "start": 1704355354102, "stop": 1704355354162}
\ No newline at end of file
{"uuid": "922dc36e-491b-49f7-a8ed-679a61b1d0a4", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355356232, "stop": 1704355356232}], "start": 1704355356232, "stop": 1704355356294}
\ No newline at end of file
{"uuid": "35948c74-574d-4ff4-a9d5-9ec7a50de4d2", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355355453, "stop": 1704355355453}], "start": 1704355355453, "stop": 1704355355520}
\ No newline at end of file
{"uuid": "64d3fecd-3542-4ede-95a1-8c00a8563012", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355356918, "stop": 1704355356918}], "start": 1704355356918, "stop": 1704355357107}
\ No newline at end of file
{"uuid": "5ea22513-0e36-4cee-93e6-ac862b962cd4", "befores": [{"name": "api_name", "status": "passed", "start": 1704355351602, "stop": 1704355351602}], "start": 1704355351602, "stop": 1704355351670}
\ No newline at end of file
{"uuid": "7345c4bc-2561-4249-b8bf-f121b82290e5", "befores": [{"name": "case_data", "status": "passed", "start": 1704355354169, "stop": 1704355354169}], "start": 1704355354169, "stop": 1704355354227}
\ No newline at end of file
{"uuid": "74783119-8638-43f7-8b8c-6c5c14a09afa", "befores": [{"name": "case_level", "status": "passed", "start": 1704355361565, "stop": 1704355361565}], "start": 1704355361565, "stop": 1704355361752}
\ No newline at end of file
{"uuid": "4c89532b-ad0c-4cf0-8c01-20a5b96cc69e", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355351892, "stop": 1704355351892}], "start": 1704355351892, "stop": 1704355351945}
\ No newline at end of file
{"uuid": "38a83ed1-7ee3-448d-9028-1bba73306892", "befores": [{"name": "case_url", "status": "passed", "start": 1704355352165, "stop": 1704355352165}], "start": 1704355352165, "stop": 1704355352265}
\ No newline at end of file
{"uuid": "688eb5cf-e7d2-45c1-8b69-bdc739ccfdb9", "befores": [{"name": "case_level", "status": "passed", "start": 1704355358015, "stop": 1704355358015}], "start": 1704355358015, "stop": 1704355358086}
\ No newline at end of file
{"uuid": "4904fd90-9e99-4fd1-bf52-9146a7697bdf", "befores": [{"name": "api_name", "status": "passed", "start": 1704355356232, "stop": 1704355356232}], "start": 1704355356232, "stop": 1704355356298}
\ No newline at end of file
{'Authorization': 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NDgsImlhdCI6MTcwNDM1NTM0OH0.74lkX0v1gQKKnKXvut_3xcu6vl2HMiFHwyCFDWvJHr7rFSBPn6m-wEq7DDyy0pZWsEhy0X60v25Wkl0xRgBIfw'}
{"uuid": "7bc01a4e-e279-4448-b122-295bc9090abc", "befores": [{"name": "module_name", "status": "passed", "start": 1704355356231, "stop": 1704355356232}], "start": 1704355356231, "stop": 1704355356299}
\ No newline at end of file
{"uuid": "e30251a6-d793-475c-8d5b-962367b90779", "befores": [{"name": "case_url", "status": "passed", "start": 1704355351602, "stop": 1704355351602}], "start": 1704355351602, "stop": 1704355351669}
\ No newline at end of file
{"uuid": "28381be1-3af3-4335-8dde-24fefa93b436", "befores": [{"name": "update_key", "status": "passed", "start": 1704355354909, "stop": 1704355354909}], "start": 1704355354909, "stop": 1704355354957}
\ No newline at end of file
{"uuid": "ed00dd2a-cfee-4efa-8cfa-84f2414b7032", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355360982, "stop": 1704355360982}], "start": 1704355360982, "stop": 1704355361171}
\ No newline at end of file
{"uuid": "38fd6b33-9760-47ae-9e11-c0da9c50757a", "befores": [{"name": "case_level", "status": "passed", "start": 1704355357690, "stop": 1704355357690}], "start": 1704355357690, "stop": 1704355357876}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "db13248c-dd3d-49c3-bd02-440ae6c1a461", "befores": [{"name": "case_req", "status": "passed", "start": 1704355358710, "stop": 1704355358710}], "start": 1704355358710, "stop": 1704355358765}
\ No newline at end of file
{"uuid": "cba18dc7-8f89-4e11-aec4-eebc2ecd94da", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355359494, "stop": 1704355359494}], "start": 1704355359494, "stop": 1704355359588}
\ No newline at end of file
{"uuid": "22715788-36b5-4052-af39-c320abc6c361", "befores": [{"name": "case_data", "status": "passed", "start": 1704355355453, "stop": 1704355355453}], "start": 1704355355453, "stop": 1704355355520}
\ No newline at end of file
{"uuid": "8b5487a8-6ed5-4e7e-bc7e-dcf8f7665844", "befores": [{"name": "case_level", "status": "passed", "start": 1704355356232, "stop": 1704355356232}], "start": 1704355356232, "stop": 1704355356298}
\ No newline at end of file
{"uuid": "6f3368a6-2f0c-4e08-b2fe-d72739658cde", "befores": [{"name": "case_data", "status": "passed", "start": 1704355358769, "stop": 1704355358769}], "start": 1704355358769, "stop": 1704355358863}
\ No newline at end of file
{"uuid": "4e5c1632-b66d-4106-ba2d-c914a51dec5d", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355355165, "stop": 1704355355165}], "start": 1704355355165, "stop": 1704355355256}
\ No newline at end of file
{"uuid": "a6ed8ed1-7798-460f-a855-4d274bded5ac", "befores": [{"name": "update_key", "status": "passed", "start": 1704355354966, "stop": 1704355354966}], "start": 1704355354966, "stop": 1704355355058}
\ No newline at end of file
{"uuid": "61288bde-7051-4f76-9ea8-7d56e605065f", "befores": [{"name": "case_title", "status": "passed", "start": 1704355351819, "stop": 1704355351819}], "start": 1704355351819, "stop": 1704355351887}
\ No newline at end of file
{"uuid": "aca24290-f008-48b7-802d-77eda26b9195", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355359197, "stop": 1704355359197}], "start": 1704355359197, "stop": 1704355359263}
\ No newline at end of file
{"uuid": "66141bff-2d8b-4505-9c9b-c4e1fe8d04d8", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355352463, "stop": 1704355352463}], "start": 1704355352463, "stop": 1704355352525}
\ No newline at end of file
{"uuid": "ebd064b7-aba0-4d61-a13d-6c127be45b00", "befores": [{"name": "update_key", "status": "passed", "start": 1704355360078, "stop": 1704355360078}], "start": 1704355360078, "stop": 1704355360139}
\ No newline at end of file
{"name": "正向用例-username和password正确", "status": "passed", "attachments": [{"name": "log", "source": "8c6017d7-6e57-421f-a61d-c72c5e9a3c1d-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "f215fcb2-cbe8-4b75-abc1-e5cfd62ebc50-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'正向用例-username和password正确'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'username': '超级管理员', 'account': 'admin', 'loginStatus': True}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355354848, "stop": 1704355354900, "uuid": "d3d2eabd-8786-4d9c-8974-775fecb6d8fa", "historyId": "d65f14bcd3e93900fed39a2ae596dcaf", "testCaseId": "f5214cfe7df9b72974e18e3d7310b5ff", "fullName": "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老张"}, {"name": "parentSuite", "value": "test_case.test_mr_zhang"}, {"name": "suite", "value": "test_mr_zhang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_zhang.test_mr_zhang"}]}
\ No newline at end of file
{"uuid": "973b4b2b-e026-430f-afd2-0a20d33bf35e", "befores": [{"name": "case_title", "status": "passed", "start": 1704355354411, "stop": 1704355354411}], "start": 1704355354411, "stop": 1704355354557}
\ No newline at end of file
{"uuid": "17389e91-fbe1-42dd-ad75-47f5919ecda3", "befores": [{"name": "case_data", "status": "passed", "start": 1704355357880, "stop": 1704355357880}], "start": 1704355357880, "stop": 1704355357943}
\ No newline at end of file
{"uuid": "9eeaeb67-9985-4f83-b33d-c58b43e2cb9f", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355358193, "stop": 1704355358193}], "start": 1704355358193, "stop": 1704355358337}
\ No newline at end of file
{"uuid": "466791b9-be05-4f81-80d1-8d326c0100c4", "befores": [{"name": "api_name", "status": "passed", "start": 1704355356511, "stop": 1704355356511}], "start": 1704355356511, "stop": 1704355356578}
\ No newline at end of file
{"uuid": "e9b3b2ff-c5b2-4150-a528-41496aba047d", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355359867, "stop": 1704355359867}], "start": 1704355359867, "stop": 1704355359962}
\ No newline at end of file
{"uuid": "a945dcbb-531d-4a02-afde-56e0615b81c1", "befores": [{"name": "case_data", "status": "passed", "start": 1704355355165, "stop": 1704355355165}], "start": 1704355355165, "stop": 1704355355256}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTAsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTAsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTAsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTAsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTAsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTAsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "2eaa6c8a-c843-4613-a50a-cdbc9006bf5f", "befores": [{"name": "case_title", "status": "passed", "start": 1704355355263, "stop": 1704355355263}], "start": 1704355355263, "stop": 1704355355374}
\ No newline at end of file
{"uuid": "581ec233-fa35-4813-ad28-211f4bcbf519", "befores": [{"name": "case_data", "status": "passed", "start": 1704355359867, "stop": 1704355359867}], "start": 1704355359867, "stop": 1704355359964}
\ No newline at end of file
{"uuid": "04c9c3cb-449d-461f-ab0d-28fde03afa1a", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355358976, "stop": 1704355358976}], "start": 1704355358976, "stop": 1704355359075}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "b38a44bf-7127-483b-9b64-a7e58127d33b-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "6e5ef2eb-9ee2-4ea5-afce-c6171cb7edfe-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'用户管理'"}, {"name": "api_name", "value": "'添加用户'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/user/v1/user/addUser'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'id': '', 'account': 'laowang', 'address': '', 'email': '', 'fullname': 'laowang', 'mobile': '', 'password': '123456', 'photo': '', 'sex': '', 'status': 1}"}, {"name": "expect_data", "value": "{'state': True, 'message': '用户添加成功!'}"}, {"name": "sql_type", "value": "'delete'"}, {"name": "sql_data", "value": "'delete from uc_user WHERE `ACCOUNT_`=\"laowang\";'"}, {"name": "update_key", "value": "None"}], "start": 1704355354412, "stop": 1704355354552, "uuid": "3df921c1-2f4a-42df-adac-04b779c0bc5f", "historyId": "a474934a1f39ac773935fa131a391ff4", "testCaseId": "f2fe01aec482200ae6914516b7a8fbd5", "fullName": "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "用户管理"}, {"name": "story", "value": "添加用户"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老王"}, {"name": "parentSuite", "value": "test_case.test_mr_wang"}, {"name": "suite", "value": "test_mr_wang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_wang.test_mr_wang"}]}
\ No newline at end of file
{"uuid": "47956b51-e614-494f-8da6-c38181056cd4", "befores": [{"name": "case_url", "status": "passed", "start": 1704355351052, "stop": 1704355351052}], "start": 1704355351052, "stop": 1704355351107}
\ No newline at end of file
{"uuid": "270a6d8f-f707-426a-8713-d7583a13e832", "befores": [{"name": "case_level", "status": "passed", "start": 1704355359197, "stop": 1704355359197}], "start": 1704355359197, "stop": 1704355359264}
\ No newline at end of file
{"uuid": "61c6e2e6-07a8-42dd-997c-fb53dfc15c6f", "befores": [{"name": "api_name", "status": "passed", "start": 1704355351314, "stop": 1704355351314}], "start": 1704355351314, "stop": 1704355351407}
\ No newline at end of file
{"uuid": "b284c58f-d319-423b-9b2b-c640d426c3f4", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355357691, "stop": 1704355357691}], "start": 1704355357691, "stop": 1704355357872}
\ No newline at end of file
{"uuid": "75358cfa-0e05-4f4c-8b4a-6b43148e8af3", "befores": [{"name": "module_name", "status": "passed", "start": 1704355351527, "stop": 1704355351527}], "start": 1704355351527, "stop": 1704355351599}
\ No newline at end of file
{"uuid": "2924a5a7-d893-4558-84d4-c1553e10658b", "befores": [{"name": "case_req", "status": "passed", "start": 1704355353109, "stop": 1704355353109}], "start": 1704355353109, "stop": 1704355353310}
\ No newline at end of file
{"uuid": "3714d512-218b-4b23-9b12-666c6ec886fc", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355361966, "stop": 1704355361966}], "start": 1704355361966, "stop": 1704355362060}
\ No newline at end of file
{"uuid": "0d5eeb3a-47fa-4124-9c15-feef2c431e52", "befores": [{"name": "case_url", "status": "passed", "start": 1704355361371, "stop": 1704355361371}], "start": 1704355361371, "stop": 1704355361560}
\ No newline at end of file
{"uuid": "34e190f6-5913-42ff-8c99-bc2b989deef4", "befores": [{"name": "update_key", "status": "passed", "start": 1704355353109, "stop": 1704355353109}], "start": 1704355353109, "stop": 1704355353307}
\ No newline at end of file
{"uuid": "599895d2-5d55-4155-96bf-1649cd991bb9", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355352394, "stop": 1704355352394}], "start": 1704355352394, "stop": 1704355352455}
\ No newline at end of file
{'Authorization': 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NDgsImlhdCI6MTcwNDM1NTM0OH0.74lkX0v1gQKKnKXvut_3xcu6vl2HMiFHwyCFDWvJHr7rFSBPn6m-wEq7DDyy0pZWsEhy0X60v25Wkl0xRgBIfw'}
{'Authorization': 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NDgsImlhdCI6MTcwNDM1NTM0OH0.74lkX0v1gQKKnKXvut_3xcu6vl2HMiFHwyCFDWvJHr7rFSBPn6m-wEq7DDyy0pZWsEhy0X60v25Wkl0xRgBIfw'}
{"uuid": "857a8079-3e9f-4f4b-bd3b-338841f7d95b", "befores": [{"name": "case_title", "status": "passed", "start": 1704355358975, "stop": 1704355358975}], "start": 1704355358975, "stop": 1704355359077}
\ No newline at end of file
{"uuid": "5d218d89-ffb6-4de9-9e2f-5298c7eb478e", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355360438, "stop": 1704355360438}], "start": 1704355360438, "stop": 1704355360577}
\ No newline at end of file
{"name": "反向用例-username错误", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210400>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x0000014648465300>('state')\nE + where <built-in method get of dict object at 0x0000014648465300> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg', ...} = <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 0x0000014648210400>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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"}, "attachments": [{"name": "log", "source": "9ed32b70-da20-4084-8b7c-1821a845a227-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username错误'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'Post'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'Admin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355359345, "stop": 1704355359403, "uuid": "7eefdea5-b0c0-4ab3-8fbb-3b0fd869c669", "historyId": "dfd4b38575c49a6fabc1cc90c1baa4fd", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "29284278-19a1-4c61-ab94-43167d0cd467", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355352605, "stop": 1704355352605}], "start": 1704355352605, "stop": 1704355352671}
\ No newline at end of file
{"uuid": "5a8591e2-fab9-4b82-a12b-ee5cbd780dc0", "befores": [{"name": "case_data", "status": "passed", "start": 1704355352532, "stop": 1704355352532}], "start": 1704355352532, "stop": 1704355352598}
\ No newline at end of file
{"uuid": "9b50a160-d873-4b2e-906c-e649ed1c843e", "befores": [{"name": "case_data", "status": "passed", "start": 1704355352463, "stop": 1704355352463}], "start": 1704355352463, "stop": 1704355352526}
\ No newline at end of file
{"uuid": "78fa8b3c-523e-440b-9a48-5550bcb82c26", "befores": [{"name": "case_data", "status": "passed", "start": 1704355355668, "stop": 1704355355668}], "start": 1704355355668, "stop": 1704355355736}
\ No newline at end of file
{"uuid": "35ab9841-d927-49be-bfb5-c22480cbf245", "befores": [{"name": "case_data", "status": "passed", "start": 1704355358870, "stop": 1704355358870}], "start": 1704355358870, "stop": 1704355358966}
\ No newline at end of file
{"uuid": "ef866a23-b10d-4f63-8bd3-18b53ef2d4de", "befores": [{"name": "case_url", "status": "passed", "start": 1704355361966, "stop": 1704355361966}], "start": 1704355361966, "stop": 1704355362061}
\ No newline at end of file
{"uuid": "7003f7a5-e347-4b42-b690-f473b3431e29", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355358710, "stop": 1704355358710}], "start": 1704355358710, "stop": 1704355358762}
\ No newline at end of file
{"uuid": "9c3c055d-eb79-445c-a33a-6b737f0d8724", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355359082, "stop": 1704355359082}], "start": 1704355359082, "stop": 1704355359192}
\ No newline at end of file
{"uuid": "57cc636e-3b83-4c59-b06e-3cb0bdfce0e0", "befores": [{"name": "api_name", "status": "passed", "start": 1704355358768, "stop": 1704355358769}], "start": 1704355358768, "stop": 1704355358865}
\ No newline at end of file
{"uuid": "2dde4934-f1fe-4014-9c9b-954bd948ff6c", "befores": [{"name": "case_req", "status": "passed", "start": 1704355358091, "stop": 1704355358091}], "start": 1704355358091, "stop": 1704355358187}
\ No newline at end of file
{"uuid": "a8a5aa1e-8722-445e-b7ba-f1b806c6e806", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355351745, "stop": 1704355351745}], "start": 1704355351745, "stop": 1704355351811}
\ No newline at end of file
{"uuid": "43d6b1a5-8602-469b-af77-1f220b0745cc", "befores": [{"name": "update_key", "status": "passed", "start": 1704355359420, "stop": 1704355359420}], "start": 1704355359420, "stop": 1704355359486}
\ No newline at end of file
{"uuid": "0961f8d8-bc19-4348-b461-ebcb0a0f31ab", "befores": [{"name": "case_data", "status": "passed", "start": 1704355356112, "stop": 1704355356112}], "start": 1704355356112, "stop": 1704355356223}
\ No newline at end of file
{"uuid": "dfa80c34-803c-42c2-95b3-f5729569f4c2", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355358710, "stop": 1704355358710}], "start": 1704355358710, "stop": 1704355358763}
\ No newline at end of file
{"uuid": "ebaba906-9f72-4711-afda-5f9f0243df5a", "befores": [{"name": "case_data", "status": "passed", "start": 1704355353514, "stop": 1704355353514}], "start": 1704355353514, "stop": 1704355353703}
\ No newline at end of file
{"uuid": "c06e825c-2839-42f2-8a1a-4a5fa4281fd7", "befores": [{"name": "case_data", "status": "passed", "start": 1704355361966, "stop": 1704355361966}], "start": 1704355361966, "stop": 1704355362061}
\ No newline at end of file
{"uuid": "ae5e145c-2058-44df-aab0-a25de358f6f5", "befores": [{"name": "update_key", "status": "passed", "start": 1704355353315, "stop": 1704355353315}], "start": 1704355353315, "stop": 1704355353505}
\ No newline at end of file
{"uuid": "70ad41c9-64e6-4788-85aa-e4efeaf6750d", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355360150, "stop": 1704355360150}], "start": 1704355360150, "stop": 1704355360216}
\ No newline at end of file
{"uuid": "69d52383-62ce-4084-bb1a-601414ba0c63", "befores": [{"name": "case_data", "status": "passed", "start": 1704355353711, "stop": 1704355353711}], "start": 1704355353711, "stop": 1704355353902}
\ No newline at end of file
{"name": "反向用例-password为特殊字符", "status": "passed", "attachments": [{"name": "log", "source": "323dd5b2-d20e-46f9-96ad-1e818f9425de-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "d74598b2-0490-41a1-a170-f57762cff527-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-password为特殊字符'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': '♠♣▣▤▥▦▩◘◙◈'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355359867, "stop": 1704355359961, "uuid": "8770e839-7802-4b17-a856-a30ef56de5fe", "historyId": "f4bb66ac962f0b403b08c5769b4d65ca", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "cde9fee8-1ff9-4cd9-8f9a-573c96750916", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355356232, "stop": 1704355356232}], "start": 1704355356232, "stop": 1704355356295}
\ No newline at end of file
{"name": "正向用例-username和password正确", "status": "passed", "attachments": [{"name": "log", "source": "b2a34ee4-2718-42ee-81ab-60909bac1a5b-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "62cb7fa7-77ba-4349-b920-415e7ce74324-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'正向用例-username和password正确'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'username': '超级管理员', 'account': 'admin', 'loginStatus': True}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355350985, "stop": 1704355351040, "uuid": "a9aa8348-0ee0-4f3c-8b32-5c8b62112ab3", "historyId": "d8867e412abe669d3691d67a6a5d6e14", "testCaseId": "f2fe01aec482200ae6914516b7a8fbd5", "fullName": "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老王"}, {"name": "parentSuite", "value": "test_case.test_mr_wang"}, {"name": "suite", "value": "test_mr_wang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_wang.test_mr_wang"}]}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F2220>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_wang\\test_mr_wang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_wang.test_mr_wang.TestTemple object at 0x00000146481F2220>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x0000014648378100>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146482519D0>, module_name = '组织管理'\napi_name = '添加组织', case_title = '正向用例', case_level = '高', case_req = 'POST'\ncase_url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', case_mime = 'application/json'\ncase_data = {'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', ...}\nexpect_data = {'message': '添加组织成功'}, sql_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_mr_wang\\test_mr_wang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "1d757070-e831-4371-b907-1ce74a22477f-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'添加组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'message': '添加组织成功'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"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": "update_key", "value": "'demId'"}], "start": 1704355353909, "stop": 1704355354085, "uuid": "5d89b3e6-9ae7-4428-849d-6fc36c483130", "historyId": "613ba371a5db8527b11f6809098d080c", "testCaseId": "f2fe01aec482200ae6914516b7a8fbd5", "fullName": "test_case.test_mr_wang.test_mr_wang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "添加组织"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老王"}, {"name": "parentSuite", "value": "test_case.test_mr_wang"}, {"name": "suite", "value": "test_mr_wang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_wang.test_mr_wang"}]}
\ No newline at end of file
{"uuid": "0d860f94-b6cf-4b16-b987-e302755c0a14", "befores": [{"name": "case_url", "status": "passed", "start": 1704355359494, "stop": 1704355359494}], "start": 1704355359494, "stop": 1704355359588}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x00000146482F4580>('message')\nE + where <built-in method get of dict object at 0x00000146482F4580> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw', 'userAttrs': {}, ...} = <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 0x0000014648210670>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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"}, "attachments": [{"name": "log", "source": "c52ce736-b05f-4779-b2c0-7a531a41139a-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'刷新token'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'GET'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/refresh'"}, {"name": "case_mime", "value": "None"}, {"name": "case_data", "value": "None"}, {"name": "expect_data", "value": "{'message': '刷新成功'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355360079, "stop": 1704355360130, "uuid": "1a99010a-df72-486d-9020-941c0c5bf4af", "historyId": "8a137f95ba4a68bf446ff9343a1271df", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "刷新token"}, {"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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTcsImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTcsImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTcsImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:{'username': 'Admin', 'password': 'MTIzNDU2'}期望数据为:{'state': False, 'message': '账号或密码错误'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTcsImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "fa3545fd-13b7-4af1-8ede-fb8f407197f4", "befores": [{"name": "case_req", "status": "passed", "start": 1704355352060, "stop": 1704355352060}], "start": 1704355352060, "stop": 1704355352159}
\ No newline at end of file
{"uuid": "a86c5965-26ac-4c90-9bc0-119a9863e1b8", "befores": [{"name": "case_req", "status": "passed", "start": 1704355361898, "stop": 1704355361898}], "start": 1704355361898, "stop": 1704355361961}
\ No newline at end of file
{"uuid": "982a895e-f939-4a71-8126-bfef40f8e73d", "befores": [{"name": "case_data", "status": "passed", "start": 1704355358976, "stop": 1704355358976}], "start": 1704355358976, "stop": 1704355359075}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "003dbca1-8bbb-49f4-b821-3ca96cec6196", "befores": [{"name": "case_url", "status": "passed", "start": 1704355354966, "stop": 1704355354966}], "start": 1704355354966, "stop": 1704355355061}
\ No newline at end of file
{"uuid": "e4b79ca7-192d-47db-bae8-d87e742bd2ba", "befores": [{"name": "case_level", "status": "passed", "start": 1704355358193, "stop": 1704355358193}], "start": 1704355358193, "stop": 1704355358340}
\ No newline at end of file
{"uuid": "09aa8dae-aa3c-425e-be76-78ac3a1e33db", "befores": [{"name": "module_name", "status": "passed", "start": 1704355360438, "stop": 1704355360438}], "start": 1704355360438, "stop": 1704355360580}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "c85d3cf7-4cd6-4253-a418-4249b71c081c", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355355453, "stop": 1704355355453}], "start": 1704355355453, "stop": 1704355355519}
\ No newline at end of file
{"uuid": "bf481976-d947-4324-ad6b-042c84e4bed7", "befores": [{"name": "case_data", "status": "passed", "start": 1704355361565, "stop": 1704355361565}], "start": 1704355361565, "stop": 1704355361750}
\ No newline at end of file
{"uuid": "96f630fb-9d9e-4b0f-af68-e7ece509cf1b", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355358870, "stop": 1704355358870}], "start": 1704355358870, "stop": 1704355358965}
\ No newline at end of file
{"uuid": "a4dccdae-9a86-4eb3-ac79-f680194f0b33", "befores": [{"name": "case_req", "status": "passed", "start": 1704355355906, "stop": 1704355355906}], "start": 1704355355906, "stop": 1704355356001}
\ No newline at end of file
{"uuid": "e1203b35-0882-45b6-b81f-ffe0931ea538", "befores": [{"name": "api_name", "status": "passed", "start": 1704355351212, "stop": 1704355351212}], "start": 1704355351212, "stop": 1704355351310}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "87588ce4-3a70-4749-bacb-f6639c620ff4", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355356918, "stop": 1704355356918}], "start": 1704355356918, "stop": 1704355357108}
\ No newline at end of file
{"uuid": "01de945e-ce52-40ac-949d-2c3cac2e0ddb", "befores": [{"name": "api_name", "status": "passed", "start": 1704355359757, "stop": 1704355359757}], "start": 1704355359757, "stop": 1704355359861}
\ No newline at end of file
{"uuid": "7681bd5e-505d-43f3-b08d-47e6766620aa", "befores": [{"name": "case_url", "status": "passed", "start": 1704355361565, "stop": 1704355361565}], "start": 1704355361565, "stop": 1704355361751}
\ No newline at end of file
{"uuid": "afbfd520-42a9-497e-b9de-19dd20ddb443", "befores": [{"name": "case_req", "status": "passed", "start": 1704355360982, "stop": 1704355360982}], "start": 1704355360982, "stop": 1704355361173}
\ No newline at end of file
{"uuid": "09c3b2a6-e1fa-4739-a20e-3e94e66fc19f", "befores": [{"name": "case_title", "status": "passed", "start": 1704355360298, "stop": 1704355360298}], "start": 1704355360298, "stop": 1704355360365}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x00000146481B3FA0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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 '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x000001464837E100>('message')\nE + where <built-in method get of dict object at 0x000001464837E100> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...1NTM1NH0.yQMAfCBLqwRx9bWlsKzQ070eZTlPgR2QrdnDcgQsZb8MP9QLEREYv8r7ZXLolk2KlPHJTD50Nsix6jrW2EFq6w', 'userAttrs': {}, ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_mr_zhang\\test_mr_zhang.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <InterfaceAutoTest.test_case.test_mr_zhang.test_mr_zhang.TestTemple object at 0x00000146481B3FA0>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x00000146481B8EB0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000014648431160>, module_name = '认证接口'\napi_name = '刷新token', case_title = '正向用例', case_level = '高', case_req = 'GET', case_url = 'http://120.46.172.186:8080/refresh'\ncase_mime = None, case_data = None, expect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_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_mr_zhang\\test_mr_zhang.py:65: AssertionError"}, "attachments": [{"name": "log", "source": "640adb46-eed9-41d3-9319-f0bc202f3f4d-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'刷新token'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'GET'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/refresh'"}, {"name": "case_mime", "value": "None"}, {"name": "case_data", "value": "None"}, {"name": "expect_data", "value": "{'message': '刷新成功'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355356442, "stop": 1704355356495, "uuid": "5fc88fbc-a06b-42e1-bc30-c805b300a479", "historyId": "7f952479ee2bf5bfa1e697e93b48b88e", "testCaseId": "f5214cfe7df9b72974e18e3d7310b5ff", "fullName": "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "刷新token"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老张"}, {"name": "parentSuite", "value": "test_case.test_mr_zhang"}, {"name": "suite", "value": "test_mr_zhang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_zhang.test_mr_zhang"}]}
\ No newline at end of file
{"uuid": "f9961097-337a-4f78-8b67-70d0f28ca8bf", "befores": [{"name": "update_key", "status": "passed", "start": 1704355359595, "stop": 1704355359595}], "start": 1704355359595, "stop": 1704355359647}
\ No newline at end of file
{"uuid": "c6ea2094-fe88-450f-8e82-ae01861837b3", "befores": [{"name": "case_data", "status": "passed", "start": 1704355355377, "stop": 1704355355377}], "start": 1704355355377, "stop": 1704355355448}
\ No newline at end of file
{"uuid": "595679c0-7cf2-422f-8e08-aa230959f673", "befores": [{"name": "case_level", "status": "passed", "start": 1704355351602, "stop": 1704355351602}], "start": 1704355351602, "stop": 1704355351669}
\ No newline at end of file
{"uuid": "4e3ed51c-ba7a-4a4c-b2ac-ff9ef2b09c78", "befores": [{"name": "case_title", "status": "passed", "start": 1704355360150, "stop": 1704355360150}], "start": 1704355360150, "stop": 1704355360219}
\ No newline at end of file
{"uuid": "7fdf87e6-57e6-4c97-b887-c048c8962045", "befores": [{"name": "module_name", "status": "passed", "start": 1704355357690, "stop": 1704355357690}], "start": 1704355357690, "stop": 1704355357877}
\ No newline at end of file
{"uuid": "40af363e-d634-48ee-890a-a5a5144c057c", "befores": [{"name": "case_title", "status": "passed", "start": 1704355361564, "stop": 1704355361565}], "start": 1704355361564, "stop": 1704355361752}
\ No newline at end of file
{"uuid": "65d351e4-79c1-4d03-a689-7066dd26a6ed", "befores": [{"name": "case_level", "status": "passed", "start": 1704355354908, "stop": 1704355354908}], "start": 1704355354908, "stop": 1704355354961}
\ No newline at end of file
{"uuid": "35d26044-ab6d-4752-bd98-a1626bf566e0", "befores": [{"name": "case_level", "status": "passed", "start": 1704355353908, "stop": 1704355353908}], "start": 1704355353908, "stop": 1704355354097}
\ No newline at end of file
{"uuid": "35bd274b-9f63-45b5-9389-94d9a139e9c4", "befores": [{"name": "api_name", "status": "passed", "start": 1704355352393, "stop": 1704355352393}], "start": 1704355352393, "stop": 1704355352459}
\ No newline at end of file
{"uuid": "83722531-1e91-4759-a90e-8d1175b26e63", "befores": [{"name": "module_name", "status": "passed", "start": 1704355352393, "stop": 1704355352393}], "start": 1704355352393, "stop": 1704355352459}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "09794c0f-6fd3-4155-b167-03ebd37c7250-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "15af35ac-3a73-42fc-86e1-53d426b0fdb5-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'用户加入组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'"}, {"name": "case_mime", "value": "'params'"}, {"name": "case_data", "value": "{'orgCode': 'test_58_org', 'accounts': 'admin,guest'}"}, {"name": "expect_data", "value": "{'state': True, 'message': '加入成功'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355357881, "stop": 1704355357941, "uuid": "a609960d-c024-462e-8c27-953e5cfbe97e", "historyId": "0467fbd91f12a0527f8c61fd28e92fe1", "testCaseId": "f5214cfe7df9b72974e18e3d7310b5ff", "fullName": "test_case.test_mr_zhang.test_mr_zhang.TestTemple#test_method_template", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "用户加入组织"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM系统-老张"}, {"name": "parentSuite", "value": "test_case.test_mr_zhang"}, {"name": "suite", "value": "test_mr_zhang"}, {"name": "subSuite", "value": "TestTemple"}, {"name": "host", "value": "TimeIsALine"}, {"name": "thread", "value": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mr_zhang.test_mr_zhang"}]}
\ No newline at end of file
{"name": "反向用例-username错误", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <InterfaceAutoTest.test_case.test_template.test_template.TestTemple object at 0x0000014648210400>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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 0x00000146484F60C0>('state')\nE + where <built-in method get of dict object at 0x00000146484F60C0> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcwNDM1NTM1N30.hnmhDlF6Wb2RgZXXLER5oBe6w_8BYR9IUwJBnhC7bzfS1GDffHfAUI9z9wseeoVN0iZvJeOifbd0UnyU9AbFDg', ...} = <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 0x0000014648210400>\ndb_fix = <InterfaceAutoTest.common.db.DB object at 0x000001464848CCD0>\nreq_fix = <InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x00000146484C6700>, module_name = '认证接口'\napi_name = '登录系统', case_title = '反向用例-username错误', case_level = '中', case_req = 'Post'\ncase_url = 'http://120.46.172.186:8080/auth', case_mime = 'json', case_data = {'password': 'MTIzNDU2', 'username': 'Admin'}\nexpect_data = {'message': '账号或密码错误', 'state': False}, sql_type = None, sql_data = None, update_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"}, "attachments": [{"name": "log", "source": "e97b6d08-3b0b-4dd3-9b2f-38b0e8abf3f4-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username错误'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'Post'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'Admin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355359495, "stop": 1704355359549, "uuid": "8cd84ef2-3054-4e27-b37d-b99c856da4fd", "historyId": "dfd4b38575c49a6fabc1cc90c1baa4fd", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "88d87fcd-1d9a-4d5a-885b-8095ee8938dc", "befores": [{"name": "module_name", "status": "passed", "start": 1704355354411, "stop": 1704355354411}], "start": 1704355354411, "stop": 1704355354557}
\ No newline at end of file
{"uuid": "cb3353e9-51d4-4ac7-87fb-5a05ed6ba6d5", "befores": [{"name": "api_name", "status": "passed", "start": 1704355359082, "stop": 1704355359082}], "start": 1704355359082, "stop": 1704355359194}
\ No newline at end of file
{"uuid": "b5498161-1beb-478d-b7b0-5b96412c83a3", "befores": [{"name": "update_key", "status": "passed", "start": 1704355352165, "stop": 1704355352165}], "start": 1704355352165, "stop": 1704355352262}
\ No newline at end of file
{"uuid": "0177ca10-17a9-4680-8871-03bade53397d", "befores": [{"name": "case_url", "status": "passed", "start": 1704355351819, "stop": 1704355351819}], "start": 1704355351819, "stop": 1704355351886}
\ No newline at end of file
{"uuid": "5d943096-cf54-4477-9fef-5a596994ec5a", "befores": [{"name": "sql_data", "status": "passed", "start": 1704355354235, "stop": 1704355354235}], "start": 1704355354235, "stop": 1704355354295}
\ No newline at end of file
{"name": "反向用例-password过短", "status": "passed", "attachments": [{"name": "log", "source": "37b8e920-26a6-4708-823c-556677df181c-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "8e1cf305-29a3-4170-a32b-6b8f0fadb356-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-password过短'"}, {"name": "case_level", "value": "'中'"}, {"name": "case_req", "value": "'POST'"}, {"name": "case_url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'm'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1704355359759, "stop": 1704355359856, "uuid": "c0562f96-1050-42f9-9999-abe866dc2a39", "historyId": "e29df96bf0b201087aade5eb4f0d82a7", "testCaseId": "752fe055e7a14e780dcfbd2a28bf8cee", "fullName": "test_case.test_template.test_template.TestTemple#test_method_template", "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": "3212-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_template.test_template"}]}
\ No newline at end of file
{"uuid": "b6d8e13c-f8a8-4055-b8ce-befcae9a4c87", "befores": [{"name": "case_url", "status": "passed", "start": 1704355353109, "stop": 1704355353109}], "start": 1704355353109, "stop": 1704355353309}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "7c256e17-a1dd-4494-920b-e3043caf027c", "befores": [{"name": "case_title", "status": "passed", "start": 1704355359866, "stop": 1704355359866}], "start": 1704355359866, "stop": 1704355359965}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTAsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTAsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTAsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTAsImlhdCI6MTcwNDM1NTM1MH0.wiKNjyupL47nr54Pz2U_uxkbyyVtmXw6uheqhmfYUrEQ2kwEIlJysPWBR7KrXQ1QNrnNIaqaQGupj9tVloXBiw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "72a1441d-5425-4c3c-9c07-8aeda6c91723", "befores": [{"name": "case_data", "status": "passed", "start": 1704355351745, "stop": 1704355351745}], "start": 1704355351745, "stop": 1704355351812}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTgsImlhdCI6MTcwNDM1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTgsImlhdCI6MTcwNDM1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTgsImlhdCI6MTcwNDM1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTgsImlhdCI6MTcwNDM1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTgsImlhdCI6MTcwNDM1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_template.py:64 断言失败:用例为:None期望数据为:{'message': '刷新成功'}服务器返回数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MDQ0NDE3NTgsImlhdCI6MTcwNDM1NTM1OH0.1n2ND0ui5e6b_0qFAxJ56TuUEEiYZBjG5W1SZ_O73wxHEOVOjaA3sOgTgUsg7F9SgM9J5a7-XiJIDI0dFYjDbw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "10ebc17b-79db-4f25-ae34-4c343bdc83e8", "befores": [{"name": "case_level", "status": "passed", "start": 1704355358769, "stop": 1704355358769}], "start": 1704355358769, "stop": 1704355358864}
\ No newline at end of file
{"uuid": "9669e0f4-942b-43d9-9c41-c1115d32f17b", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355357113, "stop": 1704355357113}], "start": 1704355357113, "stop": 1704355357305}
\ No newline at end of file
{"uuid": "088655ce-7455-4d45-a57a-1994e2b4220b", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355351892, "stop": 1704355351892}], "start": 1704355351892, "stop": 1704355351946}
\ No newline at end of file
{"uuid": "dea49065-c55d-4c14-97d5-25653b915309", "befores": [{"name": "module_name", "status": "passed", "start": 1704355357312, "stop": 1704355357312}], "start": 1704355357312, "stop": 1704355357499}
\ No newline at end of file
{"uuid": "893f574a-a683-4235-8f1c-27b9fbd45375", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355352749, "stop": 1704355352749}], "start": 1704355352749, "stop": 1704355352891}
\ No newline at end of file
{"uuid": "a1ab16ba-6078-4757-b933-e8355d367062", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355360222, "stop": 1704355360222}], "start": 1704355360222, "stop": 1704355360293}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
\ No newline at end of file
{"uuid": "6dfad183-7bcd-4428-9c28-5c08eeb7e6c6", "befores": [{"name": "case_title", "status": "passed", "start": 1704355358015, "stop": 1704355358015}], "start": 1704355358015, "stop": 1704355358086}
\ No newline at end of file
{"uuid": "1dd261ac-304f-4aff-a323-945144251b4b", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355362067, "stop": 1704355362067}], "start": 1704355362067, "stop": 1704355362215}
\ No newline at end of file
{"uuid": "a7bf25a3-62ab-4ebd-abea-93e889738ea7", "befores": [{"name": "case_data", "status": "passed", "start": 1704355353315, "stop": 1704355353315}], "start": 1704355353315, "stop": 1704355353507}
\ No newline at end of file
{"uuid": "3739dad3-08db-4ead-9284-6244cf6da7e4", "befores": [{"name": "case_mime", "status": "passed", "start": 1704355352061, "stop": 1704355352061}], "start": 1704355352061, "stop": 1704355352158}
\ No newline at end of file
INFO  root:__init__.py:26 功能的名称为:test_method_template 功能的描述为:None
ERROR  root:test_mr_wang.py:64 断言失败:用例为:{'code': 'test_58_org', 'demId': '1742818777076088832', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织-58', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}期望数据为:{'message': '添加组织成功'}服务器返回数据为:{"state":true,"message":"添加组织成功!","value":""}
ERROR  root:__init__.py:32 断言失败
\ No newline at end of file
{"uuid": "06826e44-29d0-4344-a033-213e91587fba", "befores": [{"name": "case_title", "status": "passed", "start": 1704355355526, "stop": 1704355355526}], "start": 1704355355526, "stop": 1704355355594}
\ No newline at end of file
{"uuid": "6ea9dd0c-1116-49d1-a758-0a47a91453f6", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355358193, "stop": 1704355358193}], "start": 1704355358193, "stop": 1704355358336}
\ No newline at end of file
{"uuid": "dfa8e216-4e5a-4326-8c40-21cfc4f3ae4d", "befores": [{"name": "case_data", "status": "passed", "start": 1704355358710, "stop": 1704355358710}], "start": 1704355358710, "stop": 1704355358763}
\ No newline at end of file
{"uuid": "cd4d848e-3813-41ec-8a86-9759d03429ee", "befores": [{"name": "api_name", "status": "passed", "start": 1704355360982, "stop": 1704355360982}], "start": 1704355360982, "stop": 1704355361174}
\ No newline at end of file
{"uuid": "becc37a7-ece9-478c-b20b-f99db5084808", "befores": [{"name": "expect_data", "status": "passed", "start": 1704355354235, "stop": 1704355354235}], "start": 1704355354235, "stop": 1704355354296}
\ No newline at end of file
{"uuid": "2e3daf59-2d9d-4c82-85f2-966c487acc34", "befores": [{"name": "case_req", "status": "passed", "start": 1704355360438, "stop": 1704355360438}], "start": 1704355360438, "stop": 1704355360578}
\ No newline at end of file
{"uuid": "bd009065-93d0-4a06-ad53-d5beff784fe7", "befores": [{"name": "case_req", "status": "passed", "start": 1704355354908, "stop": 1704355354908}], "start": 1704355354908, "stop": 1704355354960}
\ No newline at end of file
{"uuid": "d2ffa7a7-e1c0-4e42-897c-9548aac5493b", "befores": [{"name": "sql_type", "status": "passed", "start": 1704355357950, "stop": 1704355357950}], "start": 1704355357950, "stop": 1704355358008}
\ No newline at end of file
{"uuid": "0a4d0ebb-c70b-4240-83a9-608fb319bb2a", "befores": [{"name": "api_name", "status": "passed", "start": 1704355356441, "stop": 1704355356441}], "start": 1704355356441, "stop": 1704355356507}
\ No newline at end of file
{"uuid": "c797509f-7d65-482b-8fa3-011d7ad52cda", "befores": [{"name": "api_name", "status": "passed", "start": 1704355354307, "stop": 1704355354307}], "start": 1704355354307, "stop": 1704355354408}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment