Commit 3e16678e by 李江源

重新提交框架

parent dc905da7
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
# ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ # ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
import pymysql import pymysql
from MyApiAutoTest_v3_3 import logor, log from ApiAutoTest import logor, log
from MyApiAutoTest_v3_3.common.read_basic_ini import ReadBasicIni from ApiAutoTest.common.read_basic_ini import ReadBasicIni
class DB: class DB:
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
import configparser import configparser
import os.path import os.path
from MyApiAutoTest_v3_3 import log from ApiAutoTest import log
class ReadBasicIni: class ReadBasicIni:
......
...@@ -8,11 +8,11 @@ ...@@ -8,11 +8,11 @@
# ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ # ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
import openpyxl import openpyxl
from MyApiAutoTest_v3_3 import log from ApiAutoTest import log
from MyApiAutoTest_v3_3.common.read_basic_ini import ReadBasicIni from ApiAutoTest.common.read_basic_ini import ReadBasicIni
from MyApiAutoTest_v3_3.common.read_json import read_json from ApiAutoTest.common.read_json import read_json
from MyApiAutoTest_v3_3.common.read_user_ini import ReadUserIni from ApiAutoTest.common.read_user_ini import ReadUserIni
from MyApiAutoTest_v3_3.data_config.settings import * from ApiAutoTest.data_config.settings import *
class ReadExcel: class ReadExcel:
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
import json import json
import os.path import os.path
from MyApiAutoTest_v3_3 import log, logor from ApiAutoTest import log, logor
@log @log
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
import configparser import configparser
import os.path import os.path
from MyApiAutoTest_v3_3 import log from ApiAutoTest import log
class ReadUserIni: class ReadUserIni:
......
This source diff could not be displayed because it is too large. You can view the blob instead.
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, 'post', 'http://36.139.193.99:8088/api/org/v1/org/addOrg', 'json', {'code': 'testAddOrg', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}, 'select|delete', {'delete': 'delete from uc_org where CODE_="testAddOrg";', 'select': 'SELECT ID_ FROM uc_demension WHERE CODE_="testAddDem";'}, 'demId')或{}
INFO  root:__init__.py:46 执行的功能为:delete, 功能描述为:执行删除的sql语句, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\db.py, 所在的行为:33行,形参的值为:(<MyApiAutoTest_v3_3.common.db.DB object at 0x000001845E4F68D0>, 'delete from uc_org where CODE_="testAddOrg";')或{}
INFO  root:__init__.py:46 执行的功能为:select, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\db.py, 所在的行为:45行,形参的值为:(<MyApiAutoTest_v3_3.common.db.DB object at 0x000001845E4F68D0>, 'SELECT ID_ FROM uc_demension WHERE CODE_="testAddDem";')或{}
INFO  root:test_bpm.py:42 断言成功,用例数据为:{'code': 'testAddOrg', 'demId': '1855517127655137280', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'},期望数据为:{'state': True, 'message': '添加组织成功!'}, 服务器返回的数据为:{"state":true,"message":"添加组织成功!","value":"","code":200}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'post', 'http://36.139.193.99:8088/auth', 'application/json', {'username': '㊚㊛囍㊒㊖☑✔☐☒✘卍', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}, None, None, None)或{}
INFO  root:test_bpm.py:41 断言成功,用例数据为:{'username': '㊚㊛囍㊒㊖☑✔☐☒✘卍', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"state":false,"message":"账户错误或该租户未启用","code":200,"logId":"1855517126711418880"}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, 'post', 'http://36.139.193.99:8088/api/user/v1/user/addUser', 'json', {'id': '', 'account': 'testAddUser', 'address': '', 'email': '', 'fullname': '测试添加的用户', 'mobile': '', 'password': '123456', 'photo': '', 'sex': '', 'status': 1}, 'delete', 'delete from uc_user where ACCOUNT_="testAddUser";', None)或{}
INFO  root:__init__.py:46 执行的功能为:delete, 功能描述为:执行删除的sql语句, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\db.py, 所在的行为:33行,形参的值为:(<MyApiAutoTest_v3_3.common.db.DB object at 0x000001845E4F68D0>, 'delete from uc_user where ACCOUNT_="testAddUser";')或{}
INFO  root:test_bpm.py:42 断言成功,用例数据为:{'id': '', 'account': 'testAddUser', 'address': '', 'email': '', 'fullname': '测试添加的用户', 'mobile': '', 'password': '123456', 'photo': '', 'sex': '', 'status': 1},期望数据为:{'state': True, 'message': '用户添加成功!'}, 服务器返回的数据为:{"state":true,"message":"用户添加成功!","value":"","code":200}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, 'put', 'http://36.139.193.99:8088/api/demension/v1/dem/updateDem', 'application/json', {'code': 'testAddDem', 'description': '测试添加的维度', 'isDefault': 0, 'name': '测试添加的维度'}, None, None, None)或{}
INFO  root:test_bpm.py:42 断言成功,用例数据为:{'code': 'testAddDem', 'description': '测试添加的维度', 'isDefault': 0, 'name': '测试添加的维度'},期望数据为:{'state': True, 'message': '更新维度成功!'}, 服务器返回的数据为:{"state":true,"message":"更新维度成功!","value":"","code":200}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'get', 'http://36.139.193.99:8088/refresh', None, None, None, None, None)或{}
INFO  root:test_bpm.py:41 断言成功,用例数据为:None,期望数据为:{'loginStatus': True}, 服务器返回的数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MzEzMTExMzEsImlhdCI6MTczMTIyNDczMX0.txK-xYU0Ei7SSB6OoaxEEBa_gbB99COH72g_1XeUNSyyGc_6Tt0wfp40xCV_8a0ZHhCKAJcdrFTMNSt5YieEVQ","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, 'post', 'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams', 'query|json', {'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]}, None, None, None)或{}
ERROR  root:test_bpm.py:39 断言失败,用例数据为:{'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]},期望数据为:{'state': True, 'message': '保存组织参数成功!'}, 服务器返回的数据为:{"state":false,"message":"Required String parameter 'orgCode' is not present","code":200,"logId":"1855517128653381632"}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:get_sql_connect, 功能描述为:根据key获取数据库连接信息, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:29行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E429280>, 'host')或{}
INFO  root:__init__.py:46 执行的功能为:get_sql_connect, 功能描述为:根据key获取数据库连接信息, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:29行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E429280>, 'port')或{}
INFO  root:__init__.py:46 执行的功能为:get_sql_connect, 功能描述为:根据key获取数据库连接信息, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:29行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E429280>, 'username')或{}
INFO  root:__init__.py:46 执行的功能为:get_sql_connect, 功能描述为:根据key获取数据库连接信息, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:29行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E429280>, 'password')或{}
INFO  root:__init__.py:46 执行的功能为:get_sql_connect, 功能描述为:根据key获取数据库连接信息, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:29行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E429280>, 'database')或{}
INFO  root:__init__.py:46 执行的功能为:get_host, 功能描述为:根据key获取域名, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:24行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E460260>, 'bpm')或{}
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'post', 'http://36.139.193.99:8088/auth', 'application/json', {'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}, None, None, None)或{}
INFO  root:test_bpm.py:41 断言成功,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'username': '超级管理员', 'account': 'admin', 'userId': '1', 'expiration': 86400, 'loginStatus': True}, 服务器返回的数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MzEzMTExMzAsImlhdCI6MTczMTIyNDczMH0.nujtbsNRmxSXDP6PJ6dm6GmIZU7vY4kvjzeJ1sjh8mMRliOmtcsr39RJ2VL4vibY7iyZNci0GN0pEdy9ICBmFw","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, 'DELETE', 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', 'query', {'ids': '需要更新'}, 'select', 'SELECT ID_ FROM uc_demension WHERE CODE_="testAddDem";', 'ids')或{}
INFO  root:__init__.py:46 执行的功能为:select, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\db.py, 所在的行为:45行,形参的值为:(<MyApiAutoTest_v3_3.common.db.DB object at 0x000001845E4F68D0>, 'SELECT ID_ FROM uc_demension WHERE CODE_="testAddDem";')或{}
ERROR  root:test_bpm.py:39 断言失败,用例数据为:{'ids': '1855517127655137280'},期望数据为:{'state': True, 'message': '删除维度成功!'}, 服务器返回的数据为:{"state":false,"message":"【测试添加的维度(testAddDem)】的维度下存在组织,不允许删除 ","value":"","code":200}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'post', 'http://36.139.193.99:8088/auth', 'application/json', {'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'}, None, None, None)或{}
ERROR  root:test_bpm.py:38 断言失败,用例数据为:{'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"state":false,"message":"账号或密码错误","code":200,"logId":"1855517125629288448"}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'post', 'http://36.139.193.99:8088/auth', 'application/json', {'username': 'admin', 'password': '1'}, None, None, None)或{}
ERROR  root:test_bpm.py:38 断言失败,用例数据为:{'username': 'admin', 'password': '1'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"state":false,"message":"账号或密码错误","code":200,"logId":"1855517125377630208"}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'post', 'http://36.139.193.99:8088/auth', 'application/json', {'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='}, None, None, None)或{}
ERROR  root:test_bpm.py:38 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"state":false,"message":"解密密码异常,请检查RSA公钥和私钥配置","code":200,"logId":"1855517125125971968"}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:get_sql_connect, 功能描述为:根据key获取数据库连接信息, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:29行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E4F62D0>, 'host')或{}
INFO  root:__init__.py:46 执行的功能为:get_sql_connect, 功能描述为:根据key获取数据库连接信息, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:29行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E4F62D0>, 'port')或{}
INFO  root:__init__.py:46 执行的功能为:get_sql_connect, 功能描述为:根据key获取数据库连接信息, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:29行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E4F62D0>, 'username')或{}
INFO  root:__init__.py:46 执行的功能为:get_sql_connect, 功能描述为:根据key获取数据库连接信息, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:29行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E4F62D0>, 'password')或{}
INFO  root:__init__.py:46 执行的功能为:get_sql_connect, 功能描述为:根据key获取数据库连接信息, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:29行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E4F62D0>, 'database')或{}
INFO  root:__init__.py:46 执行的功能为:get_host, 功能描述为:根据key获取域名, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:24行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E46F650>, 'bpm')或{}
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, 'post', 'http://36.139.193.99:8088/api/demension/v1/dem/addDem', 'json', {'code': 'testAddDem', 'description': 'testAddDem', 'isDefault': 0, 'name': 'testAddDem'}, 'delete', 'DELETE FROM uc_demension WHERE CODE_="testAddDem";', None)或{}
INFO  root:__init__.py:46 执行的功能为:delete, 功能描述为:执行删除的sql语句, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\db.py, 所在的行为:33行,形参的值为:(<MyApiAutoTest_v3_3.common.db.DB object at 0x000001845E4F68D0>, 'DELETE FROM uc_demension WHERE CODE_="testAddDem";')或{}
INFO  root:test_bpm.py:42 断言成功,用例数据为:{'code': 'testAddDem', 'description': 'testAddDem', 'isDefault': 0, 'name': 'testAddDem'},期望数据为:{'state': True, 'message': '添加维度成功!'}, 服务器返回的数据为:{"state":true,"message":"添加维度成功!","value":"","code":200}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, 'DELETE', 'http://36.139.193.99:8088/api/demension/v2/dem/deleteDemByIds', 'query', {'ids': ''}, None, None, None)或{}
ERROR  root:test_bpm.py:39 断言失败,用例数据为:{'ids': ''},期望数据为:{'state': False, 'message': '维度id不能为空!'}, 服务器返回的数据为:{"state":false,"message":"删除维度失败,维度ids必填","code":200,"logId":"1855517129550962688"}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'post', 'http://36.139.193.99:8088/auth', 'application/json', {'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'}, None, None, None)或{}
ERROR  root:test_bpm.py:38 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MzEzMTExMzAsImlhdCI6MTczMTIyNDczMH0.nujtbsNRmxSXDP6PJ6dm6GmIZU7vY4kvjzeJ1sjh8mMRliOmtcsr39RJ2VL4vibY7iyZNci0GN0pEdy9ICBmFw","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'post', 'http://36.139.193.99:8088/auth', 'application/json', {'username': 'admin', 'password': ''}, None, None, None)或{}
ERROR  root:test_bpm.py:38 断言失败,用例数据为:{'username': 'admin', 'password': ''},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"state":false,"message":"账号或密码错误","code":200,"logId":"1855517125880946688"}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'post', 'http://36.139.193.99:8088/auth', 'application/json', {'username': 'adminadminadminadminadminadmin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}, None, None, None)或{}
INFO  root:test_bpm.py:41 断言成功,用例数据为:{'username': 'adminadminadminadminadminadmin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"state":false,"message":"账户错误或该租户未启用","code":200,"logId":"1855517126522675200"}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'post', 'http://36.139.193.99:8088/auth', 'application/json', {'username': 'a', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}, None, None, None)或{}
INFO  root:test_bpm.py:41 断言成功,用例数据为:{'username': 'a', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"state":false,"message":"账户错误或该租户未启用","code":200,"logId":"1855517126325542912"}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, 'put', 'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem', 'query', {'code': 'testAddDem'}, None, None, None)或{}
INFO  root:test_bpm.py:42 断言成功,用例数据为:{'code': 'testAddDem'},期望数据为:{'state': True, 'message': '设置默认维度成功!'}, 服务器返回的数据为:{"state":true,"message":"设置默认维度成功!","value":"","code":200}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'Post', 'http://36.139.193.99:8088/auth', 'application/json', {'username': '', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}, None, None, None)或{}
INFO  root:test_bpm.py:41 断言成功,用例数据为:{'username': '', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"state":false,"message":"账户错误或该租户未启用","code":200,"logId":"1855517126103244800"}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, 'post', 'http://36.139.193.99:8088/api/org/v1/org/deleteOrg', 'x-www-form-urlencoded', 'testAddOrg', None, None, None)或{}
ERROR  root:__init__.py:50 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, 'post', 'http://36.139.193.99:8088/api/org/v1/org/deleteOrg', 'x-www-form-urlencoded', 'testAddOrg', None, None, None)或{}错误的类型为:<class 'ValueError'>, 错误的描述为:方法:request_all,传入的媒体类型为:x-www-form-urlencoded, 没有符合的判断分支,可以自行封装,也可以继承之后覆盖
\ No newline at end of file
"Epic","Feature","Story","FAILED","BROKEN","PASSED","SKIPPED","UNKNOWN"
"BPM_张三","维度管理","根据维度编码删除维度","2","0","0","0","0"
"BPM_demo","认证接口","登录系统","5","0","5","0","0"
"BPM_张三","维度管理","添加维度","0","0","1","0","0"
"BPM_张三","组织管理","保存组织参数","1","0","0","0","0"
"BPM_张三","组织管理","删除组织","0","1","0","0","0"
"BPM_demo","认证接口","刷新token","0","0","1","0","0"
"BPM_张三","维度管理","设置默认维度","0","0","1","0","0"
"BPM_张三","维度管理","更新维度","0","0","1","0","0"
"BPM_张三","组织管理","添加组织","0","0","1","0","0"
"BPM_张三","用户管理","添加用户","0","0","1","0","0"
{
"uid" : "b1a8273437954620fa374b796ffaacdd",
"name" : "behaviors",
"children" : [ {
"name" : "BPM_demo",
"children" : [ {
"name" : "认证接口",
"children" : [ {
"name" : "登录系统",
"children" : [ {
"name" : "正向用例-用户和密码正确",
"uid" : "4edfa96bdd6d8321",
"parentUid" : "95ffa421c151991550521f575eb54b6f",
"status" : "passed",
"time" : {
"start" : 1731224906307,
"stop" : 1731224906341,
"duration" : 34
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T001'", "{'username': '超级管理员', 'account': 'admin', 'userId': '1', 'expiration': 86400, 'loginStatus': True}", "'高'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'正向用例-用户和密码正确'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-用户名正确-密码错误",
"uid" : "b7a903bd3620730",
"parentUid" : "95ffa421c151991550521f575eb54b6f",
"status" : "failed",
"time" : {
"start" : 1731224906358,
"stop" : 1731224906412,
"duration" : 54
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'}", "'T002'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码错误'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-用户名正确-密码过长",
"uid" : "e46c50724dd47cae",
"parentUid" : "95ffa421c151991550521f575eb54b6f",
"status" : "failed",
"time" : {
"start" : 1731224906790,
"stop" : 1731224906809,
"duration" : 19
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='}", "'T003'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码过长'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-用户名正确-密码过短",
"uid" : "4b0569de47125e1d",
"parentUid" : "95ffa421c151991550521f575eb54b6f",
"status" : "failed",
"time" : {
"start" : 1731224906830,
"stop" : 1731224906873,
"duration" : 43
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '1'}", "'T004'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码过短'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-用户名正确-密码为特殊字符",
"uid" : "ce9a582510a3e609",
"parentUid" : "95ffa421c151991550521f575eb54b6f",
"status" : "failed",
"time" : {
"start" : 1731224906895,
"stop" : 1731224906932,
"duration" : 37
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'}", "'T005'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码为特殊字符'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-用户名正确-密码为空",
"uid" : "4ecfa2b34e55ca7a",
"parentUid" : "95ffa421c151991550521f575eb54b6f",
"status" : "failed",
"time" : {
"start" : 1731224906953,
"stop" : 1731224906988,
"duration" : 35
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'T006'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码为空'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-密码正确-用户名为空",
"uid" : "7f3cca76f3a19d3b",
"parentUid" : "95ffa421c151991550521f575eb54b6f",
"status" : "passed",
"time" : {
"start" : 1731224907007,
"stop" : 1731224907042,
"duration" : 35
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': '', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T007'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'Post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-密码正确-用户名为空'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-密码正确-用户名过短",
"uid" : "b22af31325fb93",
"parentUid" : "95ffa421c151991550521f575eb54b6f",
"status" : "passed",
"time" : {
"start" : 1731224907055,
"stop" : 1731224907096,
"duration" : 41
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'a', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T008'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-密码正确-用户名过短'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-密码正确-用户名过长",
"uid" : "f68b67e663135892",
"parentUid" : "95ffa421c151991550521f575eb54b6f",
"status" : "passed",
"time" : {
"start" : 1731224907108,
"stop" : 1731224907141,
"duration" : 33
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'adminadminadminadminadminadmin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T009'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-密码正确-用户名过长'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-密码正确-用户名为特殊字符",
"uid" : "c677314e5d275414",
"parentUid" : "95ffa421c151991550521f575eb54b6f",
"status" : "passed",
"time" : {
"start" : 1731224907153,
"stop" : 1731224907192,
"duration" : 39
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': '㊚㊛囍㊒㊖☑✔☐☒✘卍', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T010'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-密码正确-用户名为特殊字符'", "None", "'http://36.139.193.99:8088/auth'" ]
} ],
"uid" : "95ffa421c151991550521f575eb54b6f"
}, {
"name" : "刷新token",
"children" : [ {
"name" : "正向用例",
"uid" : "6496531a8317cb6b",
"parentUid" : "531dfacef523a8e03b81e9201751ef9b",
"status" : "passed",
"time" : {
"start" : 1731224907227,
"stop" : 1731224907261,
"duration" : 34
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'刷新token'", "None", "'T011'", "{'loginStatus': True}", "'中'", "'get'", "None", "'认证接口'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/refresh'" ]
} ],
"uid" : "531dfacef523a8e03b81e9201751ef9b"
} ],
"uid" : "767f634283e17cef194c48a68b8d34fa"
} ],
"uid" : "d985ae0a7e3e46d43454642ab73e6d08"
}, {
"name" : "BPM_张三",
"children" : [ {
"name" : "维度管理",
"children" : [ {
"name" : "添加维度",
"children" : [ {
"name" : "正向用例",
"uid" : "2646cc0aa98fada6",
"parentUid" : "de20db55c8fcf16dbd9e0cb148ca2229",
"status" : "passed",
"time" : {
"start" : 1731224907377,
"stop" : 1731224907425,
"duration" : 48
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'testAddDem', 'description': 'testAddDem', 'isDefault': 0, 'name': 'testAddDem'}", "'T11'", "{'state': True, 'message': '添加维度成功!'}", "'高'", "'post'", "'json'", "'维度管理'", "'DELETE FROM uc_demension WHERE CODE_=\"testAddDem\";'", "'delete'", "'正向用例'", "None", "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'" ]
} ],
"uid" : "de20db55c8fcf16dbd9e0cb148ca2229"
}, {
"name" : "设置默认维度",
"children" : [ {
"name" : "正向用例",
"uid" : "33a7b0c8ee575a76",
"parentUid" : "f069affee1103656ffaf38af1f6963f1",
"status" : "passed",
"time" : {
"start" : 1731224907440,
"stop" : 1731224907472,
"duration" : 32
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'设置默认维度'", "{'code': 'testAddDem'}", "'T13'", "{'state': True, 'message': '设置默认维度成功!'}", "'中'", "'put'", "'query'", "'维度管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'" ]
} ],
"uid" : "f069affee1103656ffaf38af1f6963f1"
}, {
"name" : "更新维度",
"children" : [ {
"name" : "正向用例",
"uid" : "62edf99fda806e36",
"parentUid" : "e6d19e86318a3733c2253de5aa7c9fce",
"status" : "passed",
"time" : {
"start" : 1731224907487,
"stop" : 1731224907514,
"duration" : 27
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'更新维度'", "{'code': 'testAddDem', 'description': '测试添加的维度', 'isDefault': 0, 'name': '测试添加的维度'}", "'T14'", "{'state': True, 'message': '更新维度成功!'}", "'中'", "'put'", "'application/json'", "'维度管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/demension/v1/dem/updateDem'" ]
} ],
"uid" : "e6d19e86318a3733c2253de5aa7c9fce"
}, {
"name" : "根据维度编码删除维度",
"children" : [ {
"name" : "正向用例",
"uid" : "1ea80f386606934",
"parentUid" : "cccfb5746a7ae5185a6085822fe9aa43",
"status" : "failed",
"time" : {
"start" : 1731224907798,
"stop" : 1731224907825,
"duration" : 27
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '需要更新'}", "'T12'", "{'state': True, 'message': '删除维度成功!'}", "'中'", "'DELETE'", "'query'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";'", "'select'", "'正向用例'", "'ids'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'" ]
}, {
"name" : "反向用例-维度id为空",
"uid" : "ce89b34cbe0a2b6f",
"parentUid" : "cccfb5746a7ae5185a6085822fe9aa43",
"status" : "failed",
"time" : {
"start" : 1731224907845,
"stop" : 1731224907888,
"duration" : 43
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': ''}", "'T14'", "{'state': False, 'message': '维度id不能为空!'}", "'中'", "'DELETE'", "'query'", "'维度管理'", "None", "None", "'反向用例-维度id为空'", "None", "'http://36.139.193.99:8088/api/demension/v2/dem/deleteDemByIds'" ]
} ],
"uid" : "cccfb5746a7ae5185a6085822fe9aa43"
} ],
"uid" : "e4f5502f2f636383fcaea418be23a529"
}, {
"name" : "组织管理",
"children" : [ {
"name" : "添加组织",
"children" : [ {
"name" : "正向用例",
"uid" : "d42367b1218badb4",
"parentUid" : "23c389faa3719d5a97f3533e148ef0c5",
"status" : "passed",
"time" : {
"start" : 1731224907528,
"stop" : 1731224907589,
"duration" : 61
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'testAddOrg', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'T15'", "{'state': True, 'message': '添加组织成功!'}", "'高'", "'post'", "'json'", "'组织管理'", "{'delete': 'delete from uc_org where CODE_=\"testAddOrg\";', 'select': 'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";'}", "'select|delete'", "'正向用例'", "'demId'", "'http://36.139.193.99:8088/api/org/v1/org/addOrg'" ]
} ],
"uid" : "23c389faa3719d5a97f3533e148ef0c5"
}, {
"name" : "删除组织",
"children" : [ {
"name" : "正向用例",
"uid" : "bba39f778f33c6da",
"parentUid" : "fecee90c1fa466b9cffef1b1b4bfefcc",
"status" : "broken",
"time" : {
"start" : 1731224907612,
"stop" : 1731224907612,
"duration" : 0
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'testAddOrg'", "'T16'", "{'state': True, 'message': '删除组织成功!'}", "'中'", "'post'", "'x-www-form-urlencoded'", "'组织管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'" ]
} ],
"uid" : "fecee90c1fa466b9cffef1b1b4bfefcc"
}, {
"name" : "保存组织参数",
"children" : [ {
"name" : "正向用例",
"uid" : "b11793f110dbb06c",
"parentUid" : "35097076e24baf7cf348bfe3d24358a4",
"status" : "failed",
"time" : {
"start" : 1731224907634,
"stop" : 1731224907673,
"duration" : 39
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'保存组织参数'", "{'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]}", "'T17'", "{'state': True, 'message': '保存组织参数成功!'}", "'中'", "'post'", "'query|json'", "'组织管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'" ]
} ],
"uid" : "35097076e24baf7cf348bfe3d24358a4"
} ],
"uid" : "d05aca57c497d45e6902927c48b1a69a"
}, {
"name" : "用户管理",
"children" : [ {
"name" : "添加用户",
"children" : [ {
"name" : "正向用例",
"uid" : "5ed251abcfd9eba9",
"parentUid" : "f3e3d4f20a29cdb9cc5580c367fdf1d8",
"status" : "passed",
"time" : {
"start" : 1731224907690,
"stop" : 1731224907763,
"duration" : 73
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加用户'", "{'id': '', 'account': 'testAddUser', 'address': '', 'email': '', 'fullname': '测试添加的用户', 'mobile': '', 'password': '123456', 'photo': '', 'sex': '', 'status': 1}", "'T18'", "{'state': True, 'message': '用户添加成功!'}", "'高'", "'post'", "'json'", "'用户管理'", "'delete from uc_user where ACCOUNT_=\"testAddUser\";'", "'delete'", "'正向用例'", "None", "'http://36.139.193.99:8088/api/user/v1/user/addUser'" ]
} ],
"uid" : "f3e3d4f20a29cdb9cc5580c367fdf1d8"
} ],
"uid" : "55690175d67dd68f78f3acd4bbba8a35"
} ],
"uid" : "ffd1ae226a0f3bdfd500ee5e2644ecd6"
} ]
}
\ No newline at end of file
"Category","FAILED","BROKEN","PASSED","SKIPPED","UNKNOWN"
"Product defects","8","0","0","0","0"
"Test defects","0","1","0","0","0"
{
"uid" : "4b4757e66a1912dae1a509f688f20b0f",
"name" : "categories",
"children" : [ {
"name" : "Product defects",
"children" : [ {
"name" : "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"token\":\"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MzEzMTExMzAsImlhdCI6MTczMTIyNDczMH0.nujtbsNRmxSXDP6PJ6dm6GmIZU7vY4kvjzeJ1sjh8mMRliOmtcsr39RJ2VL4vibY7iyZNci0GN0pEdy9ICBmFw\",\"username\":\"超级管理员\",\"account\":\"admin\",\"userId\":\"1\",\"expiration\":86400,\"loginStatus\":true,\"userAttrs\":{\"tenantId\":\"-1\"}}",
"children" : [ {
"name" : "反向用例-用户名正确-密码错误",
"uid" : "b7a903bd3620730",
"parentUid" : "0ca507b244109c6991d0e787ddd4e1a8",
"status" : "failed",
"time" : {
"start" : 1731224906358,
"stop" : 1731224906412,
"duration" : 54
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'}", "'T002'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码错误'", "None", "'http://36.139.193.99:8088/auth'" ]
} ],
"uid" : "0ca507b244109c6991d0e787ddd4e1a8"
}, {
"name" : "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"解密密码异常,请检查RSA公钥和私钥配置\",\"code\":200,\"logId\":\"1855517125125971968\"}",
"children" : [ {
"name" : "反向用例-用户名正确-密码过长",
"uid" : "e46c50724dd47cae",
"parentUid" : "85f5f20230eaddfcf6c3b0da7c1a97bb",
"status" : "failed",
"time" : {
"start" : 1731224906790,
"stop" : 1731224906809,
"duration" : 19
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='}", "'T003'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码过长'", "None", "'http://36.139.193.99:8088/auth'" ]
} ],
"uid" : "85f5f20230eaddfcf6c3b0da7c1a97bb"
}, {
"name" : "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': '1'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125377630208\"}",
"children" : [ {
"name" : "反向用例-用户名正确-密码过短",
"uid" : "4b0569de47125e1d",
"parentUid" : "4f91ec662217f91e09fba772182b3ba6",
"status" : "failed",
"time" : {
"start" : 1731224906830,
"stop" : 1731224906873,
"duration" : 43
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '1'}", "'T004'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码过短'", "None", "'http://36.139.193.99:8088/auth'" ]
} ],
"uid" : "4f91ec662217f91e09fba772182b3ba6"
}, {
"name" : "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125629288448\"}",
"children" : [ {
"name" : "反向用例-用户名正确-密码为特殊字符",
"uid" : "ce9a582510a3e609",
"parentUid" : "dd01ecd5de8d9192d47314729e977748",
"status" : "failed",
"time" : {
"start" : 1731224906895,
"stop" : 1731224906932,
"duration" : 37
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'}", "'T005'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码为特殊字符'", "None", "'http://36.139.193.99:8088/auth'" ]
} ],
"uid" : "dd01ecd5de8d9192d47314729e977748"
}, {
"name" : "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': ''},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125880946688\"}",
"children" : [ {
"name" : "反向用例-用户名正确-密码为空",
"uid" : "4ecfa2b34e55ca7a",
"parentUid" : "d843406ecc5aefbdf0c28f561fc72686",
"status" : "failed",
"time" : {
"start" : 1731224906953,
"stop" : 1731224906988,
"duration" : 35
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'T006'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码为空'", "None", "'http://36.139.193.99:8088/auth'" ]
} ],
"uid" : "d843406ecc5aefbdf0c28f561fc72686"
}, {
"name" : "AssertionError: 断言失败,用例数据为:{'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]},期望数据为:{'state': True, 'message': '保存组织参数成功!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"Required String parameter 'orgCode' is not present\",\"code\":200,\"logId\":\"1855517128653381632\"}",
"children" : [ {
"name" : "正向用例",
"uid" : "b11793f110dbb06c",
"parentUid" : "04ca304f19137b416141e622d1303d46",
"status" : "failed",
"time" : {
"start" : 1731224907634,
"stop" : 1731224907673,
"duration" : 39
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'保存组织参数'", "{'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]}", "'T17'", "{'state': True, 'message': '保存组织参数成功!'}", "'中'", "'post'", "'query|json'", "'组织管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'" ]
} ],
"uid" : "04ca304f19137b416141e622d1303d46"
}, {
"name" : "AssertionError: 断言失败,用例数据为:{'ids': '1855517127655137280'},期望数据为:{'state': True, 'message': '删除维度成功!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"【测试添加的维度(testAddDem)】的维度下存在组织,不允许删除 \",\"value\":\"\",\"code\":200}",
"children" : [ {
"name" : "正向用例",
"uid" : "1ea80f386606934",
"parentUid" : "d3e6844997e5e8b24f1e393fea47f94a",
"status" : "failed",
"time" : {
"start" : 1731224907798,
"stop" : 1731224907825,
"duration" : 27
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '需要更新'}", "'T12'", "{'state': True, 'message': '删除维度成功!'}", "'中'", "'DELETE'", "'query'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";'", "'select'", "'正向用例'", "'ids'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'" ]
} ],
"uid" : "d3e6844997e5e8b24f1e393fea47f94a"
}, {
"name" : "AssertionError: 断言失败,用例数据为:{'ids': ''},期望数据为:{'state': False, 'message': '维度id不能为空!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"删除维度失败,维度ids必填\",\"code\":200,\"logId\":\"1855517129550962688\"}",
"children" : [ {
"name" : "反向用例-维度id为空",
"uid" : "ce89b34cbe0a2b6f",
"parentUid" : "ab88008f3d63bd0babc40ad9a4ef3172",
"status" : "failed",
"time" : {
"start" : 1731224907845,
"stop" : 1731224907888,
"duration" : 43
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': ''}", "'T14'", "{'state': False, 'message': '维度id不能为空!'}", "'中'", "'DELETE'", "'query'", "'维度管理'", "None", "None", "'反向用例-维度id为空'", "None", "'http://36.139.193.99:8088/api/demension/v2/dem/deleteDemByIds'" ]
} ],
"uid" : "ab88008f3d63bd0babc40ad9a4ef3172"
} ],
"uid" : "8fb3a91ba5aaf9de24cc8a92edc82b5d"
}, {
"name" : "Test defects",
"children" : [ {
"name" : "ValueError: 方法:request_all,传入的媒体类型为:x-www-form-urlencoded, 没有符合的判断分支,可以自行封装,也可以继承之后覆盖",
"children" : [ {
"name" : "正向用例",
"uid" : "bba39f778f33c6da",
"parentUid" : "2aa5e0ad00b3df2667a89a9da6eb9b42",
"status" : "broken",
"time" : {
"start" : 1731224907612,
"stop" : 1731224907612,
"duration" : 0
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'testAddOrg'", "'T16'", "{'state': True, 'message': '删除组织成功!'}", "'中'", "'post'", "'x-www-form-urlencoded'", "'组织管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'" ]
} ],
"uid" : "2aa5e0ad00b3df2667a89a9da6eb9b42"
} ],
"uid" : "bdbf199525818fae7a8651db9eafe741"
} ]
}
\ No newline at end of file
{
"uid" : "83edc06c07f9ae9e47eb6dd1b683e4e2",
"name" : "packages",
"children" : [ {
"name" : "test_case",
"children" : [ {
"name" : "test_demo.test_bpm",
"children" : [ {
"name" : "正向用例-用户和密码正确",
"uid" : "4edfa96bdd6d8321",
"parentUid" : "408359e4381982766f71d289f282adbb",
"status" : "passed",
"time" : {
"start" : 1731224906307,
"stop" : 1731224906341,
"duration" : 34
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T001'", "{'username': '超级管理员', 'account': 'admin', 'userId': '1', 'expiration': 86400, 'loginStatus': True}", "'高'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'正向用例-用户和密码正确'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-用户名正确-密码错误",
"uid" : "b7a903bd3620730",
"parentUid" : "408359e4381982766f71d289f282adbb",
"status" : "failed",
"time" : {
"start" : 1731224906358,
"stop" : 1731224906412,
"duration" : 54
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'}", "'T002'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码错误'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-用户名正确-密码过长",
"uid" : "e46c50724dd47cae",
"parentUid" : "408359e4381982766f71d289f282adbb",
"status" : "failed",
"time" : {
"start" : 1731224906790,
"stop" : 1731224906809,
"duration" : 19
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='}", "'T003'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码过长'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-用户名正确-密码过短",
"uid" : "4b0569de47125e1d",
"parentUid" : "408359e4381982766f71d289f282adbb",
"status" : "failed",
"time" : {
"start" : 1731224906830,
"stop" : 1731224906873,
"duration" : 43
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '1'}", "'T004'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码过短'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-用户名正确-密码为特殊字符",
"uid" : "ce9a582510a3e609",
"parentUid" : "408359e4381982766f71d289f282adbb",
"status" : "failed",
"time" : {
"start" : 1731224906895,
"stop" : 1731224906932,
"duration" : 37
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'}", "'T005'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码为特殊字符'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-用户名正确-密码为空",
"uid" : "4ecfa2b34e55ca7a",
"parentUid" : "408359e4381982766f71d289f282adbb",
"status" : "failed",
"time" : {
"start" : 1731224906953,
"stop" : 1731224906988,
"duration" : 35
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'T006'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码为空'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-密码正确-用户名为空",
"uid" : "7f3cca76f3a19d3b",
"parentUid" : "408359e4381982766f71d289f282adbb",
"status" : "passed",
"time" : {
"start" : 1731224907007,
"stop" : 1731224907042,
"duration" : 35
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': '', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T007'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'Post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-密码正确-用户名为空'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-密码正确-用户名过短",
"uid" : "b22af31325fb93",
"parentUid" : "408359e4381982766f71d289f282adbb",
"status" : "passed",
"time" : {
"start" : 1731224907055,
"stop" : 1731224907096,
"duration" : 41
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'a', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T008'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-密码正确-用户名过短'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-密码正确-用户名过长",
"uid" : "f68b67e663135892",
"parentUid" : "408359e4381982766f71d289f282adbb",
"status" : "passed",
"time" : {
"start" : 1731224907108,
"stop" : 1731224907141,
"duration" : 33
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'adminadminadminadminadminadmin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T009'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-密码正确-用户名过长'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-密码正确-用户名为特殊字符",
"uid" : "c677314e5d275414",
"parentUid" : "408359e4381982766f71d289f282adbb",
"status" : "passed",
"time" : {
"start" : 1731224907153,
"stop" : 1731224907192,
"duration" : 39
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': '㊚㊛囍㊒㊖☑✔☐☒✘卍', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T010'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-密码正确-用户名为特殊字符'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "正向用例",
"uid" : "6496531a8317cb6b",
"parentUid" : "408359e4381982766f71d289f282adbb",
"status" : "passed",
"time" : {
"start" : 1731224907227,
"stop" : 1731224907261,
"duration" : 34
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'刷新token'", "None", "'T011'", "{'loginStatus': True}", "'中'", "'get'", "None", "'认证接口'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/refresh'" ]
} ],
"uid" : "test_demo.test_bpm"
}, {
"name" : "test_zs.test_bpm",
"children" : [ {
"name" : "正向用例",
"uid" : "2646cc0aa98fada6",
"parentUid" : "835620787a4da21a0eccf9f555622f5a",
"status" : "passed",
"time" : {
"start" : 1731224907377,
"stop" : 1731224907425,
"duration" : 48
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'testAddDem', 'description': 'testAddDem', 'isDefault': 0, 'name': 'testAddDem'}", "'T11'", "{'state': True, 'message': '添加维度成功!'}", "'高'", "'post'", "'json'", "'维度管理'", "'DELETE FROM uc_demension WHERE CODE_=\"testAddDem\";'", "'delete'", "'正向用例'", "None", "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'" ]
}, {
"name" : "正向用例",
"uid" : "33a7b0c8ee575a76",
"parentUid" : "835620787a4da21a0eccf9f555622f5a",
"status" : "passed",
"time" : {
"start" : 1731224907440,
"stop" : 1731224907472,
"duration" : 32
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'设置默认维度'", "{'code': 'testAddDem'}", "'T13'", "{'state': True, 'message': '设置默认维度成功!'}", "'中'", "'put'", "'query'", "'维度管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'" ]
}, {
"name" : "正向用例",
"uid" : "62edf99fda806e36",
"parentUid" : "835620787a4da21a0eccf9f555622f5a",
"status" : "passed",
"time" : {
"start" : 1731224907487,
"stop" : 1731224907514,
"duration" : 27
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'更新维度'", "{'code': 'testAddDem', 'description': '测试添加的维度', 'isDefault': 0, 'name': '测试添加的维度'}", "'T14'", "{'state': True, 'message': '更新维度成功!'}", "'中'", "'put'", "'application/json'", "'维度管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/demension/v1/dem/updateDem'" ]
}, {
"name" : "正向用例",
"uid" : "d42367b1218badb4",
"parentUid" : "835620787a4da21a0eccf9f555622f5a",
"status" : "passed",
"time" : {
"start" : 1731224907528,
"stop" : 1731224907589,
"duration" : 61
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'testAddOrg', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'T15'", "{'state': True, 'message': '添加组织成功!'}", "'高'", "'post'", "'json'", "'组织管理'", "{'delete': 'delete from uc_org where CODE_=\"testAddOrg\";', 'select': 'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";'}", "'select|delete'", "'正向用例'", "'demId'", "'http://36.139.193.99:8088/api/org/v1/org/addOrg'" ]
}, {
"name" : "正向用例",
"uid" : "bba39f778f33c6da",
"parentUid" : "835620787a4da21a0eccf9f555622f5a",
"status" : "broken",
"time" : {
"start" : 1731224907612,
"stop" : 1731224907612,
"duration" : 0
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'testAddOrg'", "'T16'", "{'state': True, 'message': '删除组织成功!'}", "'中'", "'post'", "'x-www-form-urlencoded'", "'组织管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'" ]
}, {
"name" : "正向用例",
"uid" : "b11793f110dbb06c",
"parentUid" : "835620787a4da21a0eccf9f555622f5a",
"status" : "failed",
"time" : {
"start" : 1731224907634,
"stop" : 1731224907673,
"duration" : 39
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'保存组织参数'", "{'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]}", "'T17'", "{'state': True, 'message': '保存组织参数成功!'}", "'中'", "'post'", "'query|json'", "'组织管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'" ]
}, {
"name" : "正向用例",
"uid" : "5ed251abcfd9eba9",
"parentUid" : "835620787a4da21a0eccf9f555622f5a",
"status" : "passed",
"time" : {
"start" : 1731224907690,
"stop" : 1731224907763,
"duration" : 73
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加用户'", "{'id': '', 'account': 'testAddUser', 'address': '', 'email': '', 'fullname': '测试添加的用户', 'mobile': '', 'password': '123456', 'photo': '', 'sex': '', 'status': 1}", "'T18'", "{'state': True, 'message': '用户添加成功!'}", "'高'", "'post'", "'json'", "'用户管理'", "'delete from uc_user where ACCOUNT_=\"testAddUser\";'", "'delete'", "'正向用例'", "None", "'http://36.139.193.99:8088/api/user/v1/user/addUser'" ]
}, {
"name" : "正向用例",
"uid" : "1ea80f386606934",
"parentUid" : "835620787a4da21a0eccf9f555622f5a",
"status" : "failed",
"time" : {
"start" : 1731224907798,
"stop" : 1731224907825,
"duration" : 27
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '需要更新'}", "'T12'", "{'state': True, 'message': '删除维度成功!'}", "'中'", "'DELETE'", "'query'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";'", "'select'", "'正向用例'", "'ids'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'" ]
}, {
"name" : "反向用例-维度id为空",
"uid" : "ce89b34cbe0a2b6f",
"parentUid" : "835620787a4da21a0eccf9f555622f5a",
"status" : "failed",
"time" : {
"start" : 1731224907845,
"stop" : 1731224907888,
"duration" : 43
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': ''}", "'T14'", "{'state': False, 'message': '维度id不能为空!'}", "'中'", "'DELETE'", "'query'", "'维度管理'", "None", "None", "'反向用例-维度id为空'", "None", "'http://36.139.193.99:8088/api/demension/v2/dem/deleteDemByIds'" ]
} ],
"uid" : "test_zs.test_bpm"
} ],
"uid" : "3b2e467b921b0ea8d4803b9c79d92d0c"
} ]
}
\ No newline at end of file
"Status","Start Time","Stop Time","Duration in ms","Parent Suite","Suite","Sub Suite","Test Class","Test Method","Name","Description"
"failed","Sun Nov 10 15:48:27 CST 2024","Sun Nov 10 15:48:27 CST 2024","27","test_case.test_zs","test_bpm","TestBPM","","","正向用例",""
"passed","Sun Nov 10 15:48:27 CST 2024","Sun Nov 10 15:48:27 CST 2024","33","test_case.test_demo","test_bpm","TestBPM","","","反向用例-密码正确-用户名过长",""
"failed","Sun Nov 10 15:48:26 CST 2024","Sun Nov 10 15:48:26 CST 2024","19","test_case.test_demo","test_bpm","TestBPM","","","反向用例-用户名正确-密码过长",""
"passed","Sun Nov 10 15:48:27 CST 2024","Sun Nov 10 15:48:27 CST 2024","48","test_case.test_zs","test_bpm","TestBPM","","","正向用例",""
"failed","Sun Nov 10 15:48:26 CST 2024","Sun Nov 10 15:48:26 CST 2024","35","test_case.test_demo","test_bpm","TestBPM","","","反向用例-用户名正确-密码为空",""
"passed","Sun Nov 10 15:48:27 CST 2024","Sun Nov 10 15:48:27 CST 2024","41","test_case.test_demo","test_bpm","TestBPM","","","反向用例-密码正确-用户名过短",""
"passed","Sun Nov 10 15:48:27 CST 2024","Sun Nov 10 15:48:27 CST 2024","35","test_case.test_demo","test_bpm","TestBPM","","","反向用例-密码正确-用户名为空",""
"passed","Sun Nov 10 15:48:26 CST 2024","Sun Nov 10 15:48:26 CST 2024","34","test_case.test_demo","test_bpm","TestBPM","","","正向用例-用户和密码正确",""
"failed","Sun Nov 10 15:48:27 CST 2024","Sun Nov 10 15:48:27 CST 2024","39","test_case.test_zs","test_bpm","TestBPM","","","正向用例",""
"broken","Sun Nov 10 15:48:27 CST 2024","Sun Nov 10 15:48:27 CST 2024","0","test_case.test_zs","test_bpm","TestBPM","","","正向用例",""
"passed","Sun Nov 10 15:48:27 CST 2024","Sun Nov 10 15:48:27 CST 2024","34","test_case.test_demo","test_bpm","TestBPM","","","正向用例",""
"failed","Sun Nov 10 15:48:27 CST 2024","Sun Nov 10 15:48:27 CST 2024","43","test_case.test_zs","test_bpm","TestBPM","","","反向用例-维度id为空",""
"passed","Sun Nov 10 15:48:27 CST 2024","Sun Nov 10 15:48:27 CST 2024","32","test_case.test_zs","test_bpm","TestBPM","","","正向用例",""
"passed","Sun Nov 10 15:48:27 CST 2024","Sun Nov 10 15:48:27 CST 2024","27","test_case.test_zs","test_bpm","TestBPM","","","正向用例",""
"passed","Sun Nov 10 15:48:27 CST 2024","Sun Nov 10 15:48:27 CST 2024","61","test_case.test_zs","test_bpm","TestBPM","","","正向用例",""
"failed","Sun Nov 10 15:48:26 CST 2024","Sun Nov 10 15:48:26 CST 2024","43","test_case.test_demo","test_bpm","TestBPM","","","反向用例-用户名正确-密码过短",""
"passed","Sun Nov 10 15:48:27 CST 2024","Sun Nov 10 15:48:27 CST 2024","73","test_case.test_zs","test_bpm","TestBPM","","","正向用例",""
"failed","Sun Nov 10 15:48:26 CST 2024","Sun Nov 10 15:48:26 CST 2024","54","test_case.test_demo","test_bpm","TestBPM","","","反向用例-用户名正确-密码错误",""
"failed","Sun Nov 10 15:48:26 CST 2024","Sun Nov 10 15:48:26 CST 2024","37","test_case.test_demo","test_bpm","TestBPM","","","反向用例-用户名正确-密码为特殊字符",""
"passed","Sun Nov 10 15:48:27 CST 2024","Sun Nov 10 15:48:27 CST 2024","39","test_case.test_demo","test_bpm","TestBPM","","","反向用例-密码正确-用户名为特殊字符",""
{
"uid" : "98d3104e051c652961429bf95fa0b5d6",
"name" : "suites",
"children" : [ {
"name" : "test_case.test_demo",
"children" : [ {
"name" : "test_bpm",
"children" : [ {
"name" : "TestBPM",
"children" : [ {
"name" : "正向用例-用户和密码正确",
"uid" : "4edfa96bdd6d8321",
"parentUid" : "ef69bf2bb1b41f3ca3f11617396f6a81",
"status" : "passed",
"time" : {
"start" : 1731224906307,
"stop" : 1731224906341,
"duration" : 34
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T001'", "{'username': '超级管理员', 'account': 'admin', 'userId': '1', 'expiration': 86400, 'loginStatus': True}", "'高'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'正向用例-用户和密码正确'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-用户名正确-密码错误",
"uid" : "b7a903bd3620730",
"parentUid" : "ef69bf2bb1b41f3ca3f11617396f6a81",
"status" : "failed",
"time" : {
"start" : 1731224906358,
"stop" : 1731224906412,
"duration" : 54
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'}", "'T002'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码错误'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-用户名正确-密码过长",
"uid" : "e46c50724dd47cae",
"parentUid" : "ef69bf2bb1b41f3ca3f11617396f6a81",
"status" : "failed",
"time" : {
"start" : 1731224906790,
"stop" : 1731224906809,
"duration" : 19
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='}", "'T003'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码过长'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-用户名正确-密码过短",
"uid" : "4b0569de47125e1d",
"parentUid" : "ef69bf2bb1b41f3ca3f11617396f6a81",
"status" : "failed",
"time" : {
"start" : 1731224906830,
"stop" : 1731224906873,
"duration" : 43
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '1'}", "'T004'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码过短'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-用户名正确-密码为特殊字符",
"uid" : "ce9a582510a3e609",
"parentUid" : "ef69bf2bb1b41f3ca3f11617396f6a81",
"status" : "failed",
"time" : {
"start" : 1731224906895,
"stop" : 1731224906932,
"duration" : 37
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'}", "'T005'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码为特殊字符'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-用户名正确-密码为空",
"uid" : "4ecfa2b34e55ca7a",
"parentUid" : "ef69bf2bb1b41f3ca3f11617396f6a81",
"status" : "failed",
"time" : {
"start" : 1731224906953,
"stop" : 1731224906988,
"duration" : 35
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'T006'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码为空'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-密码正确-用户名为空",
"uid" : "7f3cca76f3a19d3b",
"parentUid" : "ef69bf2bb1b41f3ca3f11617396f6a81",
"status" : "passed",
"time" : {
"start" : 1731224907007,
"stop" : 1731224907042,
"duration" : 35
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': '', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T007'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'Post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-密码正确-用户名为空'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-密码正确-用户名过短",
"uid" : "b22af31325fb93",
"parentUid" : "ef69bf2bb1b41f3ca3f11617396f6a81",
"status" : "passed",
"time" : {
"start" : 1731224907055,
"stop" : 1731224907096,
"duration" : 41
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'a', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T008'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-密码正确-用户名过短'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-密码正确-用户名过长",
"uid" : "f68b67e663135892",
"parentUid" : "ef69bf2bb1b41f3ca3f11617396f6a81",
"status" : "passed",
"time" : {
"start" : 1731224907108,
"stop" : 1731224907141,
"duration" : 33
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'adminadminadminadminadminadmin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T009'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-密码正确-用户名过长'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-密码正确-用户名为特殊字符",
"uid" : "c677314e5d275414",
"parentUid" : "ef69bf2bb1b41f3ca3f11617396f6a81",
"status" : "passed",
"time" : {
"start" : 1731224907153,
"stop" : 1731224907192,
"duration" : 39
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': '㊚㊛囍㊒㊖☑✔☐☒✘卍', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T010'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-密码正确-用户名为特殊字符'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "正向用例",
"uid" : "6496531a8317cb6b",
"parentUid" : "ef69bf2bb1b41f3ca3f11617396f6a81",
"status" : "passed",
"time" : {
"start" : 1731224907227,
"stop" : 1731224907261,
"duration" : 34
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'刷新token'", "None", "'T011'", "{'loginStatus': True}", "'中'", "'get'", "None", "'认证接口'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/refresh'" ]
} ],
"uid" : "ef69bf2bb1b41f3ca3f11617396f6a81"
} ],
"uid" : "5f023a47dd31329b45d44784c00131e4"
} ],
"uid" : "7a8b7e46177bbd4d1efa8551fea4a38d"
}, {
"name" : "test_case.test_zs",
"children" : [ {
"name" : "test_bpm",
"children" : [ {
"name" : "TestBPM",
"children" : [ {
"name" : "正向用例",
"uid" : "2646cc0aa98fada6",
"parentUid" : "3545d64037fc615030f9a6eb5e7eb927",
"status" : "passed",
"time" : {
"start" : 1731224907377,
"stop" : 1731224907425,
"duration" : 48
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'testAddDem', 'description': 'testAddDem', 'isDefault': 0, 'name': 'testAddDem'}", "'T11'", "{'state': True, 'message': '添加维度成功!'}", "'高'", "'post'", "'json'", "'维度管理'", "'DELETE FROM uc_demension WHERE CODE_=\"testAddDem\";'", "'delete'", "'正向用例'", "None", "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'" ]
}, {
"name" : "正向用例",
"uid" : "33a7b0c8ee575a76",
"parentUid" : "3545d64037fc615030f9a6eb5e7eb927",
"status" : "passed",
"time" : {
"start" : 1731224907440,
"stop" : 1731224907472,
"duration" : 32
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'设置默认维度'", "{'code': 'testAddDem'}", "'T13'", "{'state': True, 'message': '设置默认维度成功!'}", "'中'", "'put'", "'query'", "'维度管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'" ]
}, {
"name" : "正向用例",
"uid" : "62edf99fda806e36",
"parentUid" : "3545d64037fc615030f9a6eb5e7eb927",
"status" : "passed",
"time" : {
"start" : 1731224907487,
"stop" : 1731224907514,
"duration" : 27
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'更新维度'", "{'code': 'testAddDem', 'description': '测试添加的维度', 'isDefault': 0, 'name': '测试添加的维度'}", "'T14'", "{'state': True, 'message': '更新维度成功!'}", "'中'", "'put'", "'application/json'", "'维度管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/demension/v1/dem/updateDem'" ]
}, {
"name" : "正向用例",
"uid" : "d42367b1218badb4",
"parentUid" : "3545d64037fc615030f9a6eb5e7eb927",
"status" : "passed",
"time" : {
"start" : 1731224907528,
"stop" : 1731224907589,
"duration" : 61
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'testAddOrg', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'T15'", "{'state': True, 'message': '添加组织成功!'}", "'高'", "'post'", "'json'", "'组织管理'", "{'delete': 'delete from uc_org where CODE_=\"testAddOrg\";', 'select': 'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";'}", "'select|delete'", "'正向用例'", "'demId'", "'http://36.139.193.99:8088/api/org/v1/org/addOrg'" ]
}, {
"name" : "正向用例",
"uid" : "bba39f778f33c6da",
"parentUid" : "3545d64037fc615030f9a6eb5e7eb927",
"status" : "broken",
"time" : {
"start" : 1731224907612,
"stop" : 1731224907612,
"duration" : 0
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'testAddOrg'", "'T16'", "{'state': True, 'message': '删除组织成功!'}", "'中'", "'post'", "'x-www-form-urlencoded'", "'组织管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'" ]
}, {
"name" : "正向用例",
"uid" : "b11793f110dbb06c",
"parentUid" : "3545d64037fc615030f9a6eb5e7eb927",
"status" : "failed",
"time" : {
"start" : 1731224907634,
"stop" : 1731224907673,
"duration" : 39
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'保存组织参数'", "{'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]}", "'T17'", "{'state': True, 'message': '保存组织参数成功!'}", "'中'", "'post'", "'query|json'", "'组织管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'" ]
}, {
"name" : "正向用例",
"uid" : "5ed251abcfd9eba9",
"parentUid" : "3545d64037fc615030f9a6eb5e7eb927",
"status" : "passed",
"time" : {
"start" : 1731224907690,
"stop" : 1731224907763,
"duration" : 73
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加用户'", "{'id': '', 'account': 'testAddUser', 'address': '', 'email': '', 'fullname': '测试添加的用户', 'mobile': '', 'password': '123456', 'photo': '', 'sex': '', 'status': 1}", "'T18'", "{'state': True, 'message': '用户添加成功!'}", "'高'", "'post'", "'json'", "'用户管理'", "'delete from uc_user where ACCOUNT_=\"testAddUser\";'", "'delete'", "'正向用例'", "None", "'http://36.139.193.99:8088/api/user/v1/user/addUser'" ]
}, {
"name" : "正向用例",
"uid" : "1ea80f386606934",
"parentUid" : "3545d64037fc615030f9a6eb5e7eb927",
"status" : "failed",
"time" : {
"start" : 1731224907798,
"stop" : 1731224907825,
"duration" : 27
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '需要更新'}", "'T12'", "{'state': True, 'message': '删除维度成功!'}", "'中'", "'DELETE'", "'query'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";'", "'select'", "'正向用例'", "'ids'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'" ]
}, {
"name" : "反向用例-维度id为空",
"uid" : "ce89b34cbe0a2b6f",
"parentUid" : "3545d64037fc615030f9a6eb5e7eb927",
"status" : "failed",
"time" : {
"start" : 1731224907845,
"stop" : 1731224907888,
"duration" : 43
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': ''}", "'T14'", "{'state': False, 'message': '维度id不能为空!'}", "'中'", "'DELETE'", "'query'", "'维度管理'", "None", "None", "'反向用例-维度id为空'", "None", "'http://36.139.193.99:8088/api/demension/v2/dem/deleteDemByIds'" ]
} ],
"uid" : "3545d64037fc615030f9a6eb5e7eb927"
} ],
"uid" : "7a5a8cf09ba0a18824ab549d9f3ae63d"
} ],
"uid" : "a4a59fbb04853758dfa8a5ee7ac8d434"
} ]
}
\ No newline at end of file
{
"uid" : "1ea80f386606934",
"name" : "正向用例",
"fullName" : "test_case.test_zs.test_bpm.TestBPM#test_bpm",
"historyId" : "17597f94d112e1dba9833de4d94ce28f",
"time" : {
"start" : 1731224907798,
"stop" : 1731224907825,
"duration" : 27
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,用例数据为:{'ids': '1855517127655137280'},期望数据为:{'state': True, 'message': '删除维度成功!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"【测试添加的维度(testAddDem)】的维度下存在组织,不允许删除 \",\"value\":\"\",\"code\":200}",
"statusTrace" : "self = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DB20>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T12', module = '维度管理', api = '根据维度编码删除维度', title = '正向用例'\nlevel = '中', method = 'DELETE', url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', mime = 'query', case_data = {'ids': '1855517127655137280'}\nexpect_data = {'message': '删除维度成功!', 'state': True}, sql_type = 'select', sql_data = 'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";', update_key = 'ids'\n\n @allure.epic(\"BPM_张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert False == True\nE + where False = <built-in method get of dict object at 0x000001845E58BC00>('state')\nE + where <built-in method get of dict object at 0x000001845E58BC00> = {'code': 200, 'message': '【测试添加的维度(testAddDem)】的维度下存在组织,不允许删除 ', 'state': False, 'value': ''}.get\nE + where {'code': 200, 'message': '【测试添加的维度(testAddDem)】的维度下存在组织,不允许删除 ', 'state': False, 'value': ''} = json()\nE + where json = <Response [200]>.json\n\ntest_case\\test_zs\\test_bpm.py:37: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DB20>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T12', module = '维度管理', api = '根据维度编码删除维度', title = '正向用例'\nlevel = '中', method = 'DELETE', url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', mime = 'query', case_data = {'ids': '1855517127655137280'}\nexpect_data = {'message': '删除维度成功!', 'state': True}, sql_type = 'select', sql_data = 'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";', update_key = 'ids'\n\n @allure.epic(\"BPM_张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'ids': '1855517127655137280'},期望数据为:{'state': True, 'message': '删除维度成功!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"【测试添加的维度(testAddDem)】的维度下存在组织,不允许删除 \",\"value\":\"\",\"code\":200}\n\ntest_case\\test_zs\\test_bpm.py:40: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1731224906103,
"stop" : 1731224906214,
"duration" : 111
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1731224907279,
"stop" : 1731224907372,
"duration" : 93
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,用例数据为:{'ids': '1855517127655137280'},期望数据为:{'state': True, 'message': '删除维度成功!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"【测试添加的维度(testAddDem)】的维度下存在组织,不允许删除 \",\"value\":\"\",\"code\":200}",
"statusTrace" : "self = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DB20>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T12', module = '维度管理', api = '根据维度编码删除维度', title = '正向用例'\nlevel = '中', method = 'DELETE', url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', mime = 'query', case_data = {'ids': '1855517127655137280'}\nexpect_data = {'message': '删除维度成功!', 'state': True}, sql_type = 'select', sql_data = 'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";', update_key = 'ids'\n\n @allure.epic(\"BPM_张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert False == True\nE + where False = <built-in method get of dict object at 0x000001845E58BC00>('state')\nE + where <built-in method get of dict object at 0x000001845E58BC00> = {'code': 200, 'message': '【测试添加的维度(testAddDem)】的维度下存在组织,不允许删除 ', 'state': False, 'value': ''}.get\nE + where {'code': 200, 'message': '【测试添加的维度(testAddDem)】的维度下存在组织,不允许删除 ', 'state': False, 'value': ''} = json()\nE + where json = <Response [200]>.json\n\ntest_case\\test_zs\\test_bpm.py:37: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DB20>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T12', module = '维度管理', api = '根据维度编码删除维度', title = '正向用例'\nlevel = '中', method = 'DELETE', url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', mime = 'query', case_data = {'ids': '1855517127655137280'}\nexpect_data = {'message': '删除维度成功!', 'state': True}, sql_type = 'select', sql_data = 'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";', update_key = 'ids'\n\n @allure.epic(\"BPM_张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'ids': '1855517127655137280'},期望数据为:{'state': True, 'message': '删除维度成功!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"【测试添加的维度(testAddDem)】的维度下存在组织,不允许删除 \",\"value\":\"\",\"code\":200}\n\ntest_case\\test_zs\\test_bpm.py:40: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "46ccf3e35e8ae5ee",
"name" : "log",
"source" : "46ccf3e35e8ae5ee.txt",
"type" : "text/plain",
"size" : 1248
} ],
"parameters" : [ ],
"shouldDisplayMessage" : true,
"attachmentsCount" : 1,
"hasContent" : true,
"stepsCount" : 0
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1731224907924,
"stop" : 1731224907924,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "根据维度编码删除维度"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM_张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_zs"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "MrLee"
}, {
"name" : "thread",
"value" : "12240-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_zs.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api",
"value" : "'根据维度编码删除维度'"
}, {
"name" : "case_data",
"value" : "{'ids': '需要更新'}"
}, {
"name" : "case_id",
"value" : "'T12'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '删除维度成功!'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "method",
"value" : "'DELETE'"
}, {
"name" : "mime",
"value" : "'query'"
}, {
"name" : "module",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";'"
}, {
"name" : "sql_type",
"value" : "'select'"
}, {
"name" : "title",
"value" : "'正向用例'"
}, {
"name" : "update_key",
"value" : "'ids'"
}, {
"name" : "url",
"value" : "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "1ea80f386606934.json",
"parameterValues" : [ "'根据维度编码删除维度'", "{'ids': '需要更新'}", "'T12'", "{'state': True, 'message': '删除维度成功!'}", "'中'", "'DELETE'", "'query'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";'", "'select'", "'正向用例'", "'ids'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'" ]
}
\ No newline at end of file
{
"uid" : "2646cc0aa98fada6",
"name" : "正向用例",
"fullName" : "test_case.test_zs.test_bpm.TestBPM#test_bpm",
"historyId" : "b06c951d4f2fdd7dc1a5686b0f444aad",
"time" : {
"start" : 1731224907377,
"stop" : 1731224907425,
"duration" : 48
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1731224906103,
"stop" : 1731224906214,
"duration" : 111
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1731224907279,
"stop" : 1731224907372,
"duration" : 93
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "826ed79a8f472b20",
"name" : "log",
"source" : "826ed79a8f472b20.txt",
"type" : "text/plain",
"size" : 3600
} ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 1,
"hasContent" : true,
"stepsCount" : 0
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1731224907924,
"stop" : 1731224907924,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "添加维度"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM_张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_zs"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "MrLee"
}, {
"name" : "thread",
"value" : "12240-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_zs.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api",
"value" : "'添加维度'"
}, {
"name" : "case_data",
"value" : "{'code': 'testAddDem', 'description': 'testAddDem', 'isDefault': 0, 'name': 'testAddDem'}"
}, {
"name" : "case_id",
"value" : "'T11'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '添加维度成功!'}"
}, {
"name" : "level",
"value" : "'高'"
}, {
"name" : "method",
"value" : "'post'"
}, {
"name" : "mime",
"value" : "'json'"
}, {
"name" : "module",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "'DELETE FROM uc_demension WHERE CODE_=\"testAddDem\";'"
}, {
"name" : "sql_type",
"value" : "'delete'"
}, {
"name" : "title",
"value" : "'正向用例'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "2646cc0aa98fada6.json",
"parameterValues" : [ "'添加维度'", "{'code': 'testAddDem', 'description': 'testAddDem', 'isDefault': 0, 'name': 'testAddDem'}", "'T11'", "{'state': True, 'message': '添加维度成功!'}", "'高'", "'post'", "'json'", "'维度管理'", "'DELETE FROM uc_demension WHERE CODE_=\"testAddDem\";'", "'delete'", "'正向用例'", "None", "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'" ]
}
\ No newline at end of file
{
"uid" : "33a7b0c8ee575a76",
"name" : "正向用例",
"fullName" : "test_case.test_zs.test_bpm.TestBPM#test_bpm",
"historyId" : "a638a20e475b27cdf565aed15cdc30cd",
"time" : {
"start" : 1731224907440,
"stop" : 1731224907472,
"duration" : 32
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1731224906103,
"stop" : 1731224906214,
"duration" : 111
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1731224907279,
"stop" : 1731224907372,
"duration" : 93
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "ef3439c4115415a0",
"name" : "log",
"source" : "ef3439c4115415a0.txt",
"type" : "text/plain",
"size" : 765
} ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 1,
"hasContent" : true,
"stepsCount" : 0
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1731224907924,
"stop" : 1731224907924,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "设置默认维度"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM_张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_zs"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "MrLee"
}, {
"name" : "thread",
"value" : "12240-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_zs.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api",
"value" : "'设置默认维度'"
}, {
"name" : "case_data",
"value" : "{'code': 'testAddDem'}"
}, {
"name" : "case_id",
"value" : "'T13'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '设置默认维度成功!'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "method",
"value" : "'put'"
}, {
"name" : "mime",
"value" : "'query'"
}, {
"name" : "module",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "title",
"value" : "'正向用例'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "33a7b0c8ee575a76.json",
"parameterValues" : [ "'设置默认维度'", "{'code': 'testAddDem'}", "'T13'", "{'state': True, 'message': '设置默认维度成功!'}", "'中'", "'put'", "'query'", "'维度管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'" ]
}
\ No newline at end of file
{
"uid" : "4b0569de47125e1d",
"name" : "反向用例-用户名正确-密码过短",
"fullName" : "test_case.test_demo.test_bpm.TestBPM#test_bpm",
"historyId" : "f4bbe037835d3f5edafde5bd0d60f40b",
"time" : {
"start" : 1731224906830,
"stop" : 1731224906873,
"duration" : 43
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': '1'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125377630208\"}",
"statusTrace" : "self = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E428320>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T004', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码过短', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json', case_data = {'password': '1', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert '账号或密码错误' == '账户错误或该租户未启用'\nE \nE - 账户错误或该租户未启用\nE + 账号或密码错误\n\ntest_case\\test_demo\\test_bpm.py:36: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E428320>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T004', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码过短', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json', case_data = {'password': '1', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': '1'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125377630208\"}\n\ntest_case\\test_demo\\test_bpm.py:39: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1731224906103,
"stop" : 1731224906214,
"duration" : 111
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1731224906214,
"stop" : 1731224906305,
"duration" : 91
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': '1'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125377630208\"}",
"statusTrace" : "self = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E428320>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T004', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码过短', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json', case_data = {'password': '1', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert '账号或密码错误' == '账户错误或该租户未启用'\nE \nE - 账户错误或该租户未启用\nE + 账号或密码错误\n\ntest_case\\test_demo\\test_bpm.py:36: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E428320>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T004', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码过短', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json', case_data = {'password': '1', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': '1'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125377630208\"}\n\ntest_case\\test_demo\\test_bpm.py:39: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "53ace66e89103767",
"name" : "log",
"source" : "53ace66e89103767.txt",
"type" : "text/plain",
"size" : 804
} ],
"parameters" : [ ],
"shouldDisplayMessage" : true,
"attachmentsCount" : 1,
"hasContent" : true,
"stepsCount" : 0
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1731224907925,
"stop" : 1731224907925,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM_demo"
}, {
"name" : "parentSuite",
"value" : "test_case.test_demo"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "MrLee"
}, {
"name" : "thread",
"value" : "12240-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_demo.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': '1'}"
}, {
"name" : "case_id",
"value" : "'T004'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "method",
"value" : "'post'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "title",
"value" : "'反向用例-用户名正确-密码过短'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://36.139.193.99:8088/auth'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "4b0569de47125e1d.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': '1'}", "'T004'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码过短'", "None", "'http://36.139.193.99:8088/auth'" ]
}
\ No newline at end of file
{
"uid" : "4ecfa2b34e55ca7a",
"name" : "反向用例-用户名正确-密码为空",
"fullName" : "test_case.test_demo.test_bpm.TestBPM#test_bpm",
"historyId" : "68f814e29a457ebc6b5588e2d54e220c",
"time" : {
"start" : 1731224906953,
"stop" : 1731224906988,
"duration" : 35
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': ''},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125880946688\"}",
"statusTrace" : "self = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E428050>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T006', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码为空', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json', case_data = {'password': '', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert '账号或密码错误' == '账户错误或该租户未启用'\nE \nE - 账户错误或该租户未启用\nE + 账号或密码错误\n\ntest_case\\test_demo\\test_bpm.py:36: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E428050>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T006', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码为空', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json', case_data = {'password': '', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': ''},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125880946688\"}\n\ntest_case\\test_demo\\test_bpm.py:39: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1731224906103,
"stop" : 1731224906214,
"duration" : 111
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1731224906214,
"stop" : 1731224906305,
"duration" : 91
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': ''},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125880946688\"}",
"statusTrace" : "self = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E428050>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T006', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码为空', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json', case_data = {'password': '', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert '账号或密码错误' == '账户错误或该租户未启用'\nE \nE - 账户错误或该租户未启用\nE + 账号或密码错误\n\ntest_case\\test_demo\\test_bpm.py:36: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E428050>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T006', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码为空', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json', case_data = {'password': '', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': ''},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125880946688\"}\n\ntest_case\\test_demo\\test_bpm.py:39: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "d8057fd3db9b8d99",
"name" : "log",
"source" : "d8057fd3db9b8d99.txt",
"type" : "text/plain",
"size" : 802
} ],
"parameters" : [ ],
"shouldDisplayMessage" : true,
"attachmentsCount" : 1,
"hasContent" : true,
"stepsCount" : 0
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1731224907925,
"stop" : 1731224907925,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM_demo"
}, {
"name" : "parentSuite",
"value" : "test_case.test_demo"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "MrLee"
}, {
"name" : "thread",
"value" : "12240-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_demo.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': ''}"
}, {
"name" : "case_id",
"value" : "'T006'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "method",
"value" : "'post'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "title",
"value" : "'反向用例-用户名正确-密码为空'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://36.139.193.99:8088/auth'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "4ecfa2b34e55ca7a.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'T006'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码为空'", "None", "'http://36.139.193.99:8088/auth'" ]
}
\ No newline at end of file
{
"uid" : "4edfa96bdd6d8321",
"name" : "正向用例-用户和密码正确",
"fullName" : "test_case.test_demo.test_bpm.TestBPM#test_bpm",
"historyId" : "91a3490156690cb2ff979c0e6b6ca1c6",
"time" : {
"start" : 1731224906307,
"stop" : 1731224906341,
"duration" : 34
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1731224906103,
"stop" : 1731224906214,
"duration" : 111
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1731224906214,
"stop" : 1731224906305,
"duration" : 91
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "46be00f0a43940d8",
"name" : "log",
"source" : "46be00f0a43940d8.txt",
"type" : "text/plain",
"size" : 3724
} ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 1,
"hasContent" : true,
"stepsCount" : 0
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1731224907925,
"stop" : 1731224907925,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM_demo"
}, {
"name" : "parentSuite",
"value" : "test_case.test_demo"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "MrLee"
}, {
"name" : "thread",
"value" : "12240-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_demo.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}"
}, {
"name" : "case_id",
"value" : "'T001'"
}, {
"name" : "expect_data",
"value" : "{'username': '超级管理员', 'account': 'admin', 'userId': '1', 'expiration': 86400, 'loginStatus': True}"
}, {
"name" : "level",
"value" : "'高'"
}, {
"name" : "method",
"value" : "'post'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "title",
"value" : "'正向用例-用户和密码正确'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://36.139.193.99:8088/auth'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "4edfa96bdd6d8321.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T001'", "{'username': '超级管理员', 'account': 'admin', 'userId': '1', 'expiration': 86400, 'loginStatus': True}", "'高'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'正向用例-用户和密码正确'", "None", "'http://36.139.193.99:8088/auth'" ]
}
\ No newline at end of file
{
"uid" : "5ed251abcfd9eba9",
"name" : "正向用例",
"fullName" : "test_case.test_zs.test_bpm.TestBPM#test_bpm",
"historyId" : "7d7d78fb8b4eff103011d131874f9c4b",
"time" : {
"start" : 1731224907690,
"stop" : 1731224907763,
"duration" : 73
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1731224906103,
"stop" : 1731224906214,
"duration" : 111
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1731224907279,
"stop" : 1731224907372,
"duration" : 93
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "400f3135d34c9d3d",
"name" : "log",
"source" : "400f3135d34c9d3d.txt",
"type" : "text/plain",
"size" : 1472
} ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 1,
"hasContent" : true,
"stepsCount" : 0
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1731224907924,
"stop" : 1731224907924,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "用户管理"
}, {
"name" : "story",
"value" : "添加用户"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM_张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_zs"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "MrLee"
}, {
"name" : "thread",
"value" : "12240-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_zs.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api",
"value" : "'添加用户'"
}, {
"name" : "case_data",
"value" : "{'id': '', 'account': 'testAddUser', 'address': '', 'email': '', 'fullname': '测试添加的用户', 'mobile': '', 'password': '123456', 'photo': '', 'sex': '', 'status': 1}"
}, {
"name" : "case_id",
"value" : "'T18'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '用户添加成功!'}"
}, {
"name" : "level",
"value" : "'高'"
}, {
"name" : "method",
"value" : "'post'"
}, {
"name" : "mime",
"value" : "'json'"
}, {
"name" : "module",
"value" : "'用户管理'"
}, {
"name" : "sql_data",
"value" : "'delete from uc_user where ACCOUNT_=\"testAddUser\";'"
}, {
"name" : "sql_type",
"value" : "'delete'"
}, {
"name" : "title",
"value" : "'正向用例'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://36.139.193.99:8088/api/user/v1/user/addUser'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "5ed251abcfd9eba9.json",
"parameterValues" : [ "'添加用户'", "{'id': '', 'account': 'testAddUser', 'address': '', 'email': '', 'fullname': '测试添加的用户', 'mobile': '', 'password': '123456', 'photo': '', 'sex': '', 'status': 1}", "'T18'", "{'state': True, 'message': '用户添加成功!'}", "'高'", "'post'", "'json'", "'用户管理'", "'delete from uc_user where ACCOUNT_=\"testAddUser\";'", "'delete'", "'正向用例'", "None", "'http://36.139.193.99:8088/api/user/v1/user/addUser'" ]
}
\ No newline at end of file
{
"uid" : "62edf99fda806e36",
"name" : "正向用例",
"fullName" : "test_case.test_zs.test_bpm.TestBPM#test_bpm",
"historyId" : "5dc8084ea7ab8b6cf5ba6056afd9c959",
"time" : {
"start" : 1731224907487,
"stop" : 1731224907514,
"duration" : 27
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1731224906103,
"stop" : 1731224906214,
"duration" : 111
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1731224907279,
"stop" : 1731224907372,
"duration" : 93
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "448803d778721ec5",
"name" : "log",
"source" : "448803d778721ec5.txt",
"type" : "text/plain",
"size" : 938
} ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 1,
"hasContent" : true,
"stepsCount" : 0
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1731224907924,
"stop" : 1731224907924,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "更新维度"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM_张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_zs"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "MrLee"
}, {
"name" : "thread",
"value" : "12240-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_zs.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api",
"value" : "'更新维度'"
}, {
"name" : "case_data",
"value" : "{'code': 'testAddDem', 'description': '测试添加的维度', 'isDefault': 0, 'name': '测试添加的维度'}"
}, {
"name" : "case_id",
"value" : "'T14'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '更新维度成功!'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "method",
"value" : "'put'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "title",
"value" : "'正向用例'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://36.139.193.99:8088/api/demension/v1/dem/updateDem'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "62edf99fda806e36.json",
"parameterValues" : [ "'更新维度'", "{'code': 'testAddDem', 'description': '测试添加的维度', 'isDefault': 0, 'name': '测试添加的维度'}", "'T14'", "{'state': True, 'message': '更新维度成功!'}", "'中'", "'put'", "'application/json'", "'维度管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/demension/v1/dem/updateDem'" ]
}
\ No newline at end of file
{
"uid" : "6496531a8317cb6b",
"name" : "正向用例",
"fullName" : "test_case.test_demo.test_bpm.TestBPM#test_bpm",
"historyId" : "ffa44683f901143ac06df43628659da8",
"time" : {
"start" : 1731224907227,
"stop" : 1731224907261,
"duration" : 34
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1731224906103,
"stop" : 1731224906214,
"duration" : 111
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1731224906214,
"stop" : 1731224906305,
"duration" : 91
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "45347055d2ed80e2",
"name" : "log",
"source" : "45347055d2ed80e2.txt",
"type" : "text/plain",
"size" : 881
} ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 1,
"hasContent" : true,
"stepsCount" : 0
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1731224907925,
"stop" : 1731224907925,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "刷新token"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM_demo"
}, {
"name" : "parentSuite",
"value" : "test_case.test_demo"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "MrLee"
}, {
"name" : "thread",
"value" : "12240-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_demo.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api",
"value" : "'刷新token'"
}, {
"name" : "case_data",
"value" : "None"
}, {
"name" : "case_id",
"value" : "'T011'"
}, {
"name" : "expect_data",
"value" : "{'loginStatus': True}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "method",
"value" : "'get'"
}, {
"name" : "mime",
"value" : "None"
}, {
"name" : "module",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "title",
"value" : "'正向用例'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://36.139.193.99:8088/refresh'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "6496531a8317cb6b.json",
"parameterValues" : [ "'刷新token'", "None", "'T011'", "{'loginStatus': True}", "'中'", "'get'", "None", "'认证接口'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/refresh'" ]
}
\ No newline at end of file
{
"uid" : "7f3cca76f3a19d3b",
"name" : "反向用例-密码正确-用户名为空",
"fullName" : "test_case.test_demo.test_bpm.TestBPM#test_bpm",
"historyId" : "3bb71f61df1e33b1390cb3a5adf67125",
"time" : {
"start" : 1731224907007,
"stop" : 1731224907042,
"duration" : 35
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1731224906103,
"stop" : 1731224906214,
"duration" : 111
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1731224906214,
"stop" : 1731224906305,
"duration" : 91
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "f6b63601101630de",
"name" : "log",
"source" : "f6b63601101630de.txt",
"type" : "text/plain",
"size" : 1144
} ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 1,
"hasContent" : true,
"stepsCount" : 0
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1731224907925,
"stop" : 1731224907925,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM_demo"
}, {
"name" : "parentSuite",
"value" : "test_case.test_demo"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "MrLee"
}, {
"name" : "thread",
"value" : "12240-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_demo.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': '', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}"
}, {
"name" : "case_id",
"value" : "'T007'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "method",
"value" : "'Post'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "title",
"value" : "'反向用例-密码正确-用户名为空'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://36.139.193.99:8088/auth'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "7f3cca76f3a19d3b.json",
"parameterValues" : [ "'登录系统'", "{'username': '', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T007'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'Post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-密码正确-用户名为空'", "None", "'http://36.139.193.99:8088/auth'" ]
}
\ No newline at end of file
{
"uid" : "b11793f110dbb06c",
"name" : "正向用例",
"fullName" : "test_case.test_zs.test_bpm.TestBPM#test_bpm",
"historyId" : "469c26340b814641be47e4fd9050fbea",
"time" : {
"start" : 1731224907634,
"stop" : 1731224907673,
"duration" : 39
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,用例数据为:{'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]},期望数据为:{'state': True, 'message': '保存组织参数成功!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"Required String parameter 'orgCode' is not present\",\"code\":200,\"logId\":\"1855517128653381632\"}",
"statusTrace" : "self = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DC40>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T17', module = '组织管理', api = '保存组织参数', title = '正向用例'\nlevel = '中', method = 'post', url = 'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams', mime = 'query|json'\ncase_data = {'body': [{'alias': 'sz', 'value': 1}], 'query': {'orgCode': 'testAddOrg'}}, expect_data = {'message': '保存组织参数成功!', 'state': True}, sql_type = None, sql_data = None\nupdate_key = None\n\n @allure.epic(\"BPM_张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE assert False == True\nE + where False = <built-in method get of dict object at 0x000001845E5A8840>('state')\nE + where <built-in method get of dict object at 0x000001845E5A8840> = {'code': 200, 'logId': '1855517128653381632', 'message': \"Required String parameter 'orgCode' is not present\", 'state': False}.get\nE + where {'code': 200, 'logId': '1855517128653381632', 'message': \"Required String parameter 'orgCode' is not present\", 'state': False} = json()\nE + where json = <Response [500]>.json\n\ntest_case\\test_zs\\test_bpm.py:37: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DC40>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T17', module = '组织管理', api = '保存组织参数', title = '正向用例'\nlevel = '中', method = 'post', url = 'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams', mime = 'query|json'\ncase_data = {'body': [{'alias': 'sz', 'value': 1}], 'query': {'orgCode': 'testAddOrg'}}, expect_data = {'message': '保存组织参数成功!', 'state': True}, sql_type = None, sql_data = None\nupdate_key = None\n\n @allure.epic(\"BPM_张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]},期望数据为:{'state': True, 'message': '保存组织参数成功!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"Required String parameter 'orgCode' is not present\",\"code\":200,\"logId\":\"1855517128653381632\"}\n\ntest_case\\test_zs\\test_bpm.py:40: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1731224906103,
"stop" : 1731224906214,
"duration" : 111
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1731224907279,
"stop" : 1731224907372,
"duration" : 93
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,用例数据为:{'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]},期望数据为:{'state': True, 'message': '保存组织参数成功!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"Required String parameter 'orgCode' is not present\",\"code\":200,\"logId\":\"1855517128653381632\"}",
"statusTrace" : "self = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DC40>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T17', module = '组织管理', api = '保存组织参数', title = '正向用例'\nlevel = '中', method = 'post', url = 'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams', mime = 'query|json'\ncase_data = {'body': [{'alias': 'sz', 'value': 1}], 'query': {'orgCode': 'testAddOrg'}}, expect_data = {'message': '保存组织参数成功!', 'state': True}, sql_type = None, sql_data = None\nupdate_key = None\n\n @allure.epic(\"BPM_张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE assert False == True\nE + where False = <built-in method get of dict object at 0x000001845E5A8840>('state')\nE + where <built-in method get of dict object at 0x000001845E5A8840> = {'code': 200, 'logId': '1855517128653381632', 'message': \"Required String parameter 'orgCode' is not present\", 'state': False}.get\nE + where {'code': 200, 'logId': '1855517128653381632', 'message': \"Required String parameter 'orgCode' is not present\", 'state': False} = json()\nE + where json = <Response [500]>.json\n\ntest_case\\test_zs\\test_bpm.py:37: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DC40>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T17', module = '组织管理', api = '保存组织参数', title = '正向用例'\nlevel = '中', method = 'post', url = 'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams', mime = 'query|json'\ncase_data = {'body': [{'alias': 'sz', 'value': 1}], 'query': {'orgCode': 'testAddOrg'}}, expect_data = {'message': '保存组织参数成功!', 'state': True}, sql_type = None, sql_data = None\nupdate_key = None\n\n @allure.epic(\"BPM_张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]},期望数据为:{'state': True, 'message': '保存组织参数成功!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"Required String parameter 'orgCode' is not present\",\"code\":200,\"logId\":\"1855517128653381632\"}\n\ntest_case\\test_zs\\test_bpm.py:40: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "458c1174d72e2157",
"name" : "log",
"source" : "458c1174d72e2157.txt",
"type" : "text/plain",
"size" : 923
} ],
"parameters" : [ ],
"shouldDisplayMessage" : true,
"attachmentsCount" : 1,
"hasContent" : true,
"stepsCount" : 0
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1731224907924,
"stop" : 1731224907924,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "保存组织参数"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM_张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_zs"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "MrLee"
}, {
"name" : "thread",
"value" : "12240-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_zs.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api",
"value" : "'保存组织参数'"
}, {
"name" : "case_data",
"value" : "{'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]}"
}, {
"name" : "case_id",
"value" : "'T17'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '保存组织参数成功!'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "method",
"value" : "'post'"
}, {
"name" : "mime",
"value" : "'query|json'"
}, {
"name" : "module",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "title",
"value" : "'正向用例'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "b11793f110dbb06c.json",
"parameterValues" : [ "'保存组织参数'", "{'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]}", "'T17'", "{'state': True, 'message': '保存组织参数成功!'}", "'中'", "'post'", "'query|json'", "'组织管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'" ]
}
\ No newline at end of file
{
"uid" : "b22af31325fb93",
"name" : "反向用例-密码正确-用户名过短",
"fullName" : "test_case.test_demo.test_bpm.TestBPM#test_bpm",
"historyId" : "494e61fa27e17cb5f6dd716d3d739d58",
"time" : {
"start" : 1731224907055,
"stop" : 1731224907096,
"duration" : 41
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1731224906103,
"stop" : 1731224906214,
"duration" : 111
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1731224906214,
"stop" : 1731224906305,
"duration" : 91
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "e6dfdac0aca01828",
"name" : "log",
"source" : "e6dfdac0aca01828.txt",
"type" : "text/plain",
"size" : 1146
} ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 1,
"hasContent" : true,
"stepsCount" : 0
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1731224907925,
"stop" : 1731224907925,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM_demo"
}, {
"name" : "parentSuite",
"value" : "test_case.test_demo"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "MrLee"
}, {
"name" : "thread",
"value" : "12240-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_demo.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'a', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}"
}, {
"name" : "case_id",
"value" : "'T008'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "method",
"value" : "'post'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "title",
"value" : "'反向用例-密码正确-用户名过短'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://36.139.193.99:8088/auth'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "b22af31325fb93.json",
"parameterValues" : [ "'登录系统'", "{'username': 'a', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T008'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-密码正确-用户名过短'", "None", "'http://36.139.193.99:8088/auth'" ]
}
\ No newline at end of file
{
"uid" : "b7a903bd3620730",
"name" : "反向用例-用户名正确-密码错误",
"fullName" : "test_case.test_demo.test_bpm.TestBPM#test_bpm",
"historyId" : "2844246667da2592af2b30e55c79200d",
"time" : {
"start" : 1731224906358,
"stop" : 1731224906412,
"duration" : 54
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"token\":\"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MzEzMTExMzAsImlhdCI6MTczMTIyNDczMH0.nujtbsNRmxSXDP6PJ6dm6GmIZU7vY4kvjzeJ1sjh8mMRliOmtcsr39RJ2VL4vibY7iyZNci0GN0pEdy9ICBmFw\",\"username\":\"超级管理员\",\"account\":\"admin\",\"userId\":\"1\",\"expiration\":86400,\"loginStatus\":true,\"userAttrs\":{\"tenantId\":\"-1\"}}",
"statusTrace" : "self = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845D127800>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T002', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码错误', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json'\ncase_data = {'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert None == False\nE + where None = <built-in method get of dict object at 0x000001845E502580>('state')\nE + where <built-in method get of dict object at 0x000001845E502580> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...AsImlhdCI6MTczMTIyNDczMH0.nujtbsNRmxSXDP6PJ6dm6GmIZU7vY4kvjzeJ1sjh8mMRliOmtcsr39RJ2VL4vibY7iyZNci0GN0pEdy9ICBmFw', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...AsImlhdCI6MTczMTIyNDczMH0.nujtbsNRmxSXDP6PJ6dm6GmIZU7vY4kvjzeJ1sjh8mMRliOmtcsr39RJ2VL4vibY7iyZNci0GN0pEdy9ICBmFw', ...} = json()\nE + where json = <Response [200]>.json\n\ntest_case\\test_demo\\test_bpm.py:36: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845D127800>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T002', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码错误', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json'\ncase_data = {'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"token\":\"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MzEzMTExMzAsImlhdCI6MTczMTIyNDczMH0.nujtbsNRmxSXDP6PJ6dm6GmIZU7vY4kvjzeJ1sjh8mMRliOmtcsr39RJ2VL4vibY7iyZNci0GN0pEdy9ICBmFw\",\"username\":\"超级管理员\",\"account\":\"admin\",\"userId\":\"1\",\"expiration\":86400,\"loginStatus\":true,\"userAttrs\":{\"tenantId\":\"-1\"}}\n\ntest_case\\test_demo\\test_bpm.py:39: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1731224906103,
"stop" : 1731224906214,
"duration" : 111
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1731224906214,
"stop" : 1731224906305,
"duration" : 91
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"token\":\"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MzEzMTExMzAsImlhdCI6MTczMTIyNDczMH0.nujtbsNRmxSXDP6PJ6dm6GmIZU7vY4kvjzeJ1sjh8mMRliOmtcsr39RJ2VL4vibY7iyZNci0GN0pEdy9ICBmFw\",\"username\":\"超级管理员\",\"account\":\"admin\",\"userId\":\"1\",\"expiration\":86400,\"loginStatus\":true,\"userAttrs\":{\"tenantId\":\"-1\"}}",
"statusTrace" : "self = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845D127800>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T002', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码错误', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json'\ncase_data = {'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert None == False\nE + where None = <built-in method get of dict object at 0x000001845E502580>('state')\nE + where <built-in method get of dict object at 0x000001845E502580> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...AsImlhdCI6MTczMTIyNDczMH0.nujtbsNRmxSXDP6PJ6dm6GmIZU7vY4kvjzeJ1sjh8mMRliOmtcsr39RJ2VL4vibY7iyZNci0GN0pEdy9ICBmFw', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...AsImlhdCI6MTczMTIyNDczMH0.nujtbsNRmxSXDP6PJ6dm6GmIZU7vY4kvjzeJ1sjh8mMRliOmtcsr39RJ2VL4vibY7iyZNci0GN0pEdy9ICBmFw', ...} = json()\nE + where json = <Response [200]>.json\n\ntest_case\\test_demo\\test_bpm.py:36: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845D127800>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T002', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码错误', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json'\ncase_data = {'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"token\":\"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MzEzMTExMzAsImlhdCI6MTczMTIyNDczMH0.nujtbsNRmxSXDP6PJ6dm6GmIZU7vY4kvjzeJ1sjh8mMRliOmtcsr39RJ2VL4vibY7iyZNci0GN0pEdy9ICBmFw\",\"username\":\"超级管理员\",\"account\":\"admin\",\"userId\":\"1\",\"expiration\":86400,\"loginStatus\":true,\"userAttrs\":{\"tenantId\":\"-1\"}}\n\ntest_case\\test_demo\\test_bpm.py:39: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "be8a2dbcce579f27",
"name" : "log",
"source" : "be8a2dbcce579f27.txt",
"type" : "text/plain",
"size" : 1389
} ],
"parameters" : [ ],
"shouldDisplayMessage" : true,
"attachmentsCount" : 1,
"hasContent" : true,
"stepsCount" : 0
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1731224907925,
"stop" : 1731224907925,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM_demo"
}, {
"name" : "parentSuite",
"value" : "test_case.test_demo"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "MrLee"
}, {
"name" : "thread",
"value" : "12240-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_demo.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'}"
}, {
"name" : "case_id",
"value" : "'T002'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "method",
"value" : "'post'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "title",
"value" : "'反向用例-用户名正确-密码错误'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://36.139.193.99:8088/auth'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "b7a903bd3620730.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'}", "'T002'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码错误'", "None", "'http://36.139.193.99:8088/auth'" ]
}
\ No newline at end of file
{
"uid" : "bba39f778f33c6da",
"name" : "正向用例",
"fullName" : "test_case.test_zs.test_bpm.TestBPM#test_bpm",
"historyId" : "69af0bd69ed14cf779d192406f1531bc",
"time" : {
"start" : 1731224907612,
"stop" : 1731224907612,
"duration" : 0
},
"status" : "broken",
"statusMessage" : "ValueError: 方法:request_all,传入的媒体类型为:x-www-form-urlencoded, 没有符合的判断分支,可以自行封装,也可以继承之后覆盖",
"statusTrace" : "self = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DCD0>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T16', module = '组织管理', api = '删除组织', title = '正向用例'\nlevel = '中', method = 'post', url = 'http://36.139.193.99:8088/api/org/v1/org/deleteOrg', mime = 'x-www-form-urlencoded', case_data = 'testAddOrg'\nexpect_data = {'message': '删除组织成功!', 'state': True}, 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(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n> res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n\ntest_case\\test_zs\\test_bpm.py:33: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n__init__.py:53: in inner\n raise e\n__init__.py:48: in inner\n result = func_name(*args, **kwargs)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, method = 'post'\nurl = 'http://36.139.193.99:8088/api/org/v1/org/deleteOrg', mime = 'x-www-form-urlencoded', case_data = 'testAddOrg', sql_type = None, sql_data = None, update_key = None\n\n @log\n def request_all(self, method, url, mime=None, case_data=None, sql_type=None, sql_data=None, update_key=None):\n if sql_type == \"delete\":\n self.db.delete(sql_data)\n elif sql_type == \"select\":\n select_result = self.db.select(sql_data)\n case_data[update_key] = select_result\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 执行删除语句\n self.db.delete(sql_data[\"delete\"])\n # 执行查询语句\n select_result = self.db.select(sql_data[\"select\"])\n case_data[update_key] = select_result\n \n # 根据请求的媒体类型发送请求\n # 发送的数据为json数据\n if mime == \"json\" or mime == \"application/json\":\n return self.session.request(method, url, json=case_data)\n # 发送的数据为文件\n elif mime == \"multipart/form-data\" or mime == \"form-data\":\n return self.session.request(method, url, files=case_data)\n # 通过URL传参\n elif mime == \"query\":\n return self.session.request(method, url, params=case_data)\n # 不传参\n elif mime is None:\n return self.session.request(method, url)\n # 需要同时传参\n elif mime == \"query|json\" or mime == \"json|query\":\n return self.session.request(method, url, json=case_data, params=case_data)\n # 都不是,抛出错误\n else:\n> raise ValueError(f\"方法:request_all,传入的媒体类型为:{mime}, 没有符合的判断分支,可以自行封装,也可以继承之后覆盖\")\nE ValueError: 方法:request_all,传入的媒体类型为:x-www-form-urlencoded, 没有符合的判断分支,可以自行封装,也可以继承之后覆盖\n\nrequests_method\\requests_method.py:63: ValueError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1731224906103,
"stop" : 1731224906214,
"duration" : 111
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1731224907279,
"stop" : 1731224907372,
"duration" : 93
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"testStage" : {
"status" : "broken",
"statusMessage" : "ValueError: 方法:request_all,传入的媒体类型为:x-www-form-urlencoded, 没有符合的判断分支,可以自行封装,也可以继承之后覆盖",
"statusTrace" : "self = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DCD0>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T16', module = '组织管理', api = '删除组织', title = '正向用例'\nlevel = '中', method = 'post', url = 'http://36.139.193.99:8088/api/org/v1/org/deleteOrg', mime = 'x-www-form-urlencoded', case_data = 'testAddOrg'\nexpect_data = {'message': '删除组织成功!', 'state': True}, 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(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n> res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n\ntest_case\\test_zs\\test_bpm.py:33: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n__init__.py:53: in inner\n raise e\n__init__.py:48: in inner\n result = func_name(*args, **kwargs)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, method = 'post'\nurl = 'http://36.139.193.99:8088/api/org/v1/org/deleteOrg', mime = 'x-www-form-urlencoded', case_data = 'testAddOrg', sql_type = None, sql_data = None, update_key = None\n\n @log\n def request_all(self, method, url, mime=None, case_data=None, sql_type=None, sql_data=None, update_key=None):\n if sql_type == \"delete\":\n self.db.delete(sql_data)\n elif sql_type == \"select\":\n select_result = self.db.select(sql_data)\n case_data[update_key] = select_result\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 执行删除语句\n self.db.delete(sql_data[\"delete\"])\n # 执行查询语句\n select_result = self.db.select(sql_data[\"select\"])\n case_data[update_key] = select_result\n \n # 根据请求的媒体类型发送请求\n # 发送的数据为json数据\n if mime == \"json\" or mime == \"application/json\":\n return self.session.request(method, url, json=case_data)\n # 发送的数据为文件\n elif mime == \"multipart/form-data\" or mime == \"form-data\":\n return self.session.request(method, url, files=case_data)\n # 通过URL传参\n elif mime == \"query\":\n return self.session.request(method, url, params=case_data)\n # 不传参\n elif mime is None:\n return self.session.request(method, url)\n # 需要同时传参\n elif mime == \"query|json\" or mime == \"json|query\":\n return self.session.request(method, url, json=case_data, params=case_data)\n # 都不是,抛出错误\n else:\n> raise ValueError(f\"方法:request_all,传入的媒体类型为:{mime}, 没有符合的判断分支,可以自行封装,也可以继承之后覆盖\")\nE ValueError: 方法:request_all,传入的媒体类型为:x-www-form-urlencoded, 没有符合的判断分支,可以自行封装,也可以继承之后覆盖\n\nrequests_method\\requests_method.py:63: ValueError",
"steps" : [ ],
"attachments" : [ {
"uid" : "fdfa2b28df6a1a29",
"name" : "log",
"source" : "fdfa2b28df6a1a29.txt",
"type" : "text/plain",
"size" : 1180
} ],
"parameters" : [ ],
"shouldDisplayMessage" : true,
"attachmentsCount" : 1,
"hasContent" : true,
"stepsCount" : 0
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1731224907924,
"stop" : 1731224907924,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "删除组织"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM_张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_zs"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "MrLee"
}, {
"name" : "thread",
"value" : "12240-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_zs.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api",
"value" : "'删除组织'"
}, {
"name" : "case_data",
"value" : "'testAddOrg'"
}, {
"name" : "case_id",
"value" : "'T16'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '删除组织成功!'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "method",
"value" : "'post'"
}, {
"name" : "mime",
"value" : "'x-www-form-urlencoded'"
}, {
"name" : "module",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "title",
"value" : "'正向用例'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Test defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "bba39f778f33c6da.json",
"parameterValues" : [ "'删除组织'", "'testAddOrg'", "'T16'", "{'state': True, 'message': '删除组织成功!'}", "'中'", "'post'", "'x-www-form-urlencoded'", "'组织管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'" ]
}
\ No newline at end of file
{
"uid" : "c677314e5d275414",
"name" : "反向用例-密码正确-用户名为特殊字符",
"fullName" : "test_case.test_demo.test_bpm.TestBPM#test_bpm",
"historyId" : "ca917b83e98db4327bdb638860f07b10",
"time" : {
"start" : 1731224907153,
"stop" : 1731224907192,
"duration" : 39
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1731224906103,
"stop" : 1731224906214,
"duration" : 111
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1731224906214,
"stop" : 1731224906305,
"duration" : 91
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "2ecf267b80182a19",
"name" : "log",
"source" : "2ecf267b80182a19.txt",
"type" : "text/plain",
"size" : 1210
} ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 1,
"hasContent" : true,
"stepsCount" : 0
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1731224907925,
"stop" : 1731224907925,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM_demo"
}, {
"name" : "parentSuite",
"value" : "test_case.test_demo"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "MrLee"
}, {
"name" : "thread",
"value" : "12240-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_demo.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': '㊚㊛囍㊒㊖☑✔☐☒✘卍', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}"
}, {
"name" : "case_id",
"value" : "'T010'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "method",
"value" : "'post'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "title",
"value" : "'反向用例-密码正确-用户名为特殊字符'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://36.139.193.99:8088/auth'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "c677314e5d275414.json",
"parameterValues" : [ "'登录系统'", "{'username': '㊚㊛囍㊒㊖☑✔☐☒✘卍', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T010'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-密码正确-用户名为特殊字符'", "None", "'http://36.139.193.99:8088/auth'" ]
}
\ No newline at end of file
{
"uid" : "ce89b34cbe0a2b6f",
"name" : "反向用例-维度id为空",
"fullName" : "test_case.test_zs.test_bpm.TestBPM#test_bpm",
"historyId" : "e3050e2f234ddf0f662637a33116a88d",
"time" : {
"start" : 1731224907845,
"stop" : 1731224907888,
"duration" : 43
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,用例数据为:{'ids': ''},期望数据为:{'state': False, 'message': '维度id不能为空!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"删除维度失败,维度ids必填\",\"code\":200,\"logId\":\"1855517129550962688\"}",
"statusTrace" : "self = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DA90>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T14', module = '维度管理', api = '根据维度编码删除维度'\ntitle = '反向用例-维度id为空', level = '中', method = 'DELETE', url = 'http://36.139.193.99:8088/api/demension/v2/dem/deleteDemByIds', mime = 'query', case_data = {'ids': ''}\nexpect_data = {'message': '维度id不能为空!', '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(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert '删除维度失败,维度ids必填' == '维度id不能为空!'\nE \nE - 维度id不能为空!\nE + 删除维度失败,维度ids必填\n\ntest_case\\test_zs\\test_bpm.py:37: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DA90>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T14', module = '维度管理', api = '根据维度编码删除维度'\ntitle = '反向用例-维度id为空', level = '中', method = 'DELETE', url = 'http://36.139.193.99:8088/api/demension/v2/dem/deleteDemByIds', mime = 'query', case_data = {'ids': ''}\nexpect_data = {'message': '维度id不能为空!', '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(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'ids': ''},期望数据为:{'state': False, 'message': '维度id不能为空!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"删除维度失败,维度ids必填\",\"code\":200,\"logId\":\"1855517129550962688\"}\n\ntest_case\\test_zs\\test_bpm.py:40: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1731224906103,
"stop" : 1731224906214,
"duration" : 111
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1731224907279,
"stop" : 1731224907372,
"duration" : 93
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,用例数据为:{'ids': ''},期望数据为:{'state': False, 'message': '维度id不能为空!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"删除维度失败,维度ids必填\",\"code\":200,\"logId\":\"1855517129550962688\"}",
"statusTrace" : "self = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DA90>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T14', module = '维度管理', api = '根据维度编码删除维度'\ntitle = '反向用例-维度id为空', level = '中', method = 'DELETE', url = 'http://36.139.193.99:8088/api/demension/v2/dem/deleteDemByIds', mime = 'query', case_data = {'ids': ''}\nexpect_data = {'message': '维度id不能为空!', '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(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert '删除维度失败,维度ids必填' == '维度id不能为空!'\nE \nE - 维度id不能为空!\nE + 删除维度失败,维度ids必填\n\ntest_case\\test_zs\\test_bpm.py:37: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DA90>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T14', module = '维度管理', api = '根据维度编码删除维度'\ntitle = '反向用例-维度id为空', level = '中', method = 'DELETE', url = 'http://36.139.193.99:8088/api/demension/v2/dem/deleteDemByIds', mime = 'query', case_data = {'ids': ''}\nexpect_data = {'message': '维度id不能为空!', '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(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'ids': ''},期望数据为:{'state': False, 'message': '维度id不能为空!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"删除维度失败,维度ids必填\",\"code\":200,\"logId\":\"1855517129550962688\"}\n\ntest_case\\test_zs\\test_bpm.py:40: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "9051ebdc8acfa12b",
"name" : "log",
"source" : "9051ebdc8acfa12b.txt",
"type" : "text/plain",
"size" : 777
} ],
"parameters" : [ ],
"shouldDisplayMessage" : true,
"attachmentsCount" : 1,
"hasContent" : true,
"stepsCount" : 0
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1731224907924,
"stop" : 1731224907924,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "根据维度编码删除维度"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM_张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_zs"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "MrLee"
}, {
"name" : "thread",
"value" : "12240-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_zs.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api",
"value" : "'根据维度编码删除维度'"
}, {
"name" : "case_data",
"value" : "{'ids': ''}"
}, {
"name" : "case_id",
"value" : "'T14'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '维度id不能为空!'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "method",
"value" : "'DELETE'"
}, {
"name" : "mime",
"value" : "'query'"
}, {
"name" : "module",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "title",
"value" : "'反向用例-维度id为空'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://36.139.193.99:8088/api/demension/v2/dem/deleteDemByIds'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "ce89b34cbe0a2b6f.json",
"parameterValues" : [ "'根据维度编码删除维度'", "{'ids': ''}", "'T14'", "{'state': False, 'message': '维度id不能为空!'}", "'中'", "'DELETE'", "'query'", "'维度管理'", "None", "None", "'反向用例-维度id为空'", "None", "'http://36.139.193.99:8088/api/demension/v2/dem/deleteDemByIds'" ]
}
\ No newline at end of file
{
"uid" : "ce9a582510a3e609",
"name" : "反向用例-用户名正确-密码为特殊字符",
"fullName" : "test_case.test_demo.test_bpm.TestBPM#test_bpm",
"historyId" : "5b54fc1b7f63783d9155a88280542170",
"time" : {
"start" : 1731224906895,
"stop" : 1731224906932,
"duration" : 37
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125629288448\"}",
"statusTrace" : "self = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E428E90>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T005', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码为特殊字符', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json'\ncase_data = {'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert '账号或密码错误' == '账户错误或该租户未启用'\nE \nE - 账户错误或该租户未启用\nE + 账号或密码错误\n\ntest_case\\test_demo\\test_bpm.py:36: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E428E90>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T005', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码为特殊字符', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json'\ncase_data = {'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125629288448\"}\n\ntest_case\\test_demo\\test_bpm.py:39: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1731224906103,
"stop" : 1731224906214,
"duration" : 111
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1731224906214,
"stop" : 1731224906305,
"duration" : 91
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125629288448\"}",
"statusTrace" : "self = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E428E90>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T005', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码为特殊字符', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json'\ncase_data = {'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert '账号或密码错误' == '账户错误或该租户未启用'\nE \nE - 账户错误或该租户未启用\nE + 账号或密码错误\n\ntest_case\\test_demo\\test_bpm.py:36: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E428E90>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T005', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码为特殊字符', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json'\ncase_data = {'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125629288448\"}\n\ntest_case\\test_demo\\test_bpm.py:39: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "472f081472318c15",
"name" : "log",
"source" : "472f081472318c15.txt",
"type" : "text/plain",
"size" : 868
} ],
"parameters" : [ ],
"shouldDisplayMessage" : true,
"attachmentsCount" : 1,
"hasContent" : true,
"stepsCount" : 0
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1731224907925,
"stop" : 1731224907925,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM_demo"
}, {
"name" : "parentSuite",
"value" : "test_case.test_demo"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "MrLee"
}, {
"name" : "thread",
"value" : "12240-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_demo.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'}"
}, {
"name" : "case_id",
"value" : "'T005'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "method",
"value" : "'post'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "title",
"value" : "'反向用例-用户名正确-密码为特殊字符'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://36.139.193.99:8088/auth'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "ce9a582510a3e609.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'}", "'T005'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码为特殊字符'", "None", "'http://36.139.193.99:8088/auth'" ]
}
\ No newline at end of file
{
"uid" : "d42367b1218badb4",
"name" : "正向用例",
"fullName" : "test_case.test_zs.test_bpm.TestBPM#test_bpm",
"historyId" : "45592bfb3b2f0c6bce8b183ef4959ec1",
"time" : {
"start" : 1731224907528,
"stop" : 1731224907589,
"duration" : 61
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1731224906103,
"stop" : 1731224906214,
"duration" : 111
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1731224907279,
"stop" : 1731224907372,
"duration" : 93
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "2809d51c35ba247a",
"name" : "log",
"source" : "2809d51c35ba247a.txt",
"type" : "text/plain",
"size" : 1913
} ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 1,
"hasContent" : true,
"stepsCount" : 0
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1731224907924,
"stop" : 1731224907924,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "添加组织"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM_张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_zs"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "MrLee"
}, {
"name" : "thread",
"value" : "12240-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_zs.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api",
"value" : "'添加组织'"
}, {
"name" : "case_data",
"value" : "{'code': 'testAddOrg', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"
}, {
"name" : "case_id",
"value" : "'T15'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '添加组织成功!'}"
}, {
"name" : "level",
"value" : "'高'"
}, {
"name" : "method",
"value" : "'post'"
}, {
"name" : "mime",
"value" : "'json'"
}, {
"name" : "module",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "{'delete': 'delete from uc_org where CODE_=\"testAddOrg\";', 'select': 'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";'}"
}, {
"name" : "sql_type",
"value" : "'select|delete'"
}, {
"name" : "title",
"value" : "'正向用例'"
}, {
"name" : "update_key",
"value" : "'demId'"
}, {
"name" : "url",
"value" : "'http://36.139.193.99:8088/api/org/v1/org/addOrg'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "d42367b1218badb4.json",
"parameterValues" : [ "'添加组织'", "{'code': 'testAddOrg', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'T15'", "{'state': True, 'message': '添加组织成功!'}", "'高'", "'post'", "'json'", "'组织管理'", "{'delete': 'delete from uc_org where CODE_=\"testAddOrg\";', 'select': 'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";'}", "'select|delete'", "'正向用例'", "'demId'", "'http://36.139.193.99:8088/api/org/v1/org/addOrg'" ]
}
\ No newline at end of file
{
"uid" : "e46c50724dd47cae",
"name" : "反向用例-用户名正确-密码过长",
"fullName" : "test_case.test_demo.test_bpm.TestBPM#test_bpm",
"historyId" : "f113bde1b9e64b7560197c25580bc705",
"time" : {
"start" : 1731224906790,
"stop" : 1731224906809,
"duration" : 19
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"解密密码异常,请检查RSA公钥和私钥配置\",\"code\":200,\"logId\":\"1855517125125971968\"}",
"statusTrace" : "self = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E42A4E0>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T003', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码过长', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json'\ncase_data = {'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEj...LfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert '解密密码异常,请检查RSA公钥和私钥配置' == '账户错误或该租户未启用'\nE \nE - 账户错误或该租户未启用\nE + 解密密码异常,请检查RSA公钥和私钥配置\n\ntest_case\\test_demo\\test_bpm.py:36: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E42A4E0>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T003', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码过长', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json'\ncase_data = {'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEj...LfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"解密密码异常,请检查RSA公钥和私钥配置\",\"code\":200,\"logId\":\"1855517125125971968\"}\n\ntest_case\\test_demo\\test_bpm.py:39: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1731224906103,
"stop" : 1731224906214,
"duration" : 111
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1731224906214,
"stop" : 1731224906305,
"duration" : 91
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"解密密码异常,请检查RSA公钥和私钥配置\",\"code\":200,\"logId\":\"1855517125125971968\"}",
"statusTrace" : "self = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E42A4E0>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T003', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码过长', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json'\ncase_data = {'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEj...LfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert '解密密码异常,请检查RSA公钥和私钥配置' == '账户错误或该租户未启用'\nE \nE - 账户错误或该租户未启用\nE + 解密密码异常,请检查RSA公钥和私钥配置\n\ntest_case\\test_demo\\test_bpm.py:36: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E42A4E0>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T003', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码过长', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json'\ncase_data = {'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEj...LfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"解密密码异常,请检查RSA公钥和私钥配置\",\"code\":200,\"logId\":\"1855517125125971968\"}\n\ntest_case\\test_demo\\test_bpm.py:39: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "64359dfb13eaf817",
"name" : "log",
"source" : "64359dfb13eaf817.txt",
"type" : "text/plain",
"size" : 1905
} ],
"parameters" : [ ],
"shouldDisplayMessage" : true,
"attachmentsCount" : 1,
"hasContent" : true,
"stepsCount" : 0
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1731224907925,
"stop" : 1731224907925,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM_demo"
}, {
"name" : "parentSuite",
"value" : "test_case.test_demo"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "MrLee"
}, {
"name" : "thread",
"value" : "12240-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_demo.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='}"
}, {
"name" : "case_id",
"value" : "'T003'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "method",
"value" : "'post'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "title",
"value" : "'反向用例-用户名正确-密码过长'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://36.139.193.99:8088/auth'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "e46c50724dd47cae.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='}", "'T003'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码过长'", "None", "'http://36.139.193.99:8088/auth'" ]
}
\ No newline at end of file
{
"uid" : "f68b67e663135892",
"name" : "反向用例-密码正确-用户名过长",
"fullName" : "test_case.test_demo.test_bpm.TestBPM#test_bpm",
"historyId" : "d6ffe46b175439dde0de98e73817b16c",
"time" : {
"start" : 1731224907108,
"stop" : 1731224907141,
"duration" : 33
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1731224906103,
"stop" : 1731224906214,
"duration" : 111
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
}, {
"name" : "req_fix",
"time" : {
"start" : 1731224906214,
"stop" : 1731224906305,
"duration" : 91
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "d8dae13e9d29e35c",
"name" : "log",
"source" : "d8dae13e9d29e35c.txt",
"type" : "text/plain",
"size" : 1204
} ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 1,
"hasContent" : true,
"stepsCount" : 0
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1731224907925,
"stop" : 1731224907925,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"shouldDisplayMessage" : false,
"attachmentsCount" : 0,
"hasContent" : false,
"stepsCount" : 0
} ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM_demo"
}, {
"name" : "parentSuite",
"value" : "test_case.test_demo"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "MrLee"
}, {
"name" : "thread",
"value" : "12240-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_demo.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'adminadminadminadminadminadmin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}"
}, {
"name" : "case_id",
"value" : "'T009'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "method",
"value" : "'post'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "title",
"value" : "'反向用例-密码正确-用户名过长'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://36.139.193.99:8088/auth'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "f68b67e663135892.json",
"parameterValues" : [ "'登录系统'", "{'username': 'adminadminadminadminadminadmin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T009'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-密码正确-用户名过长'", "None", "'http://36.139.193.99:8088/auth'" ]
}
\ No newline at end of file
{
"uid" : "ab17fc5a4eb3bca4b216b548c7f9fcbc",
"name" : "timeline",
"children" : [ {
"name" : "MrLee",
"children" : [ {
"name" : "12240-MainThread",
"children" : [ {
"name" : "反向用例-密码正确-用户名为空",
"uid" : "7f3cca76f3a19d3b",
"parentUid" : "652f5f917af3b4f9198ca7870c1da0fd",
"status" : "passed",
"time" : {
"start" : 1731224907007,
"stop" : 1731224907042,
"duration" : 35
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': '', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T007'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'Post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-密码正确-用户名为空'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "正向用例",
"uid" : "1ea80f386606934",
"parentUid" : "652f5f917af3b4f9198ca7870c1da0fd",
"status" : "failed",
"time" : {
"start" : 1731224907798,
"stop" : 1731224907825,
"duration" : 27
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '需要更新'}", "'T12'", "{'state': True, 'message': '删除维度成功!'}", "'中'", "'DELETE'", "'query'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";'", "'select'", "'正向用例'", "'ids'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'" ]
}, {
"name" : "正向用例",
"uid" : "bba39f778f33c6da",
"parentUid" : "652f5f917af3b4f9198ca7870c1da0fd",
"status" : "broken",
"time" : {
"start" : 1731224907612,
"stop" : 1731224907612,
"duration" : 0
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'testAddOrg'", "'T16'", "{'state': True, 'message': '删除组织成功!'}", "'中'", "'post'", "'x-www-form-urlencoded'", "'组织管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'" ]
}, {
"name" : "反向用例-密码正确-用户名过长",
"uid" : "f68b67e663135892",
"parentUid" : "652f5f917af3b4f9198ca7870c1da0fd",
"status" : "passed",
"time" : {
"start" : 1731224907108,
"stop" : 1731224907141,
"duration" : 33
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'adminadminadminadminadminadmin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T009'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-密码正确-用户名过长'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "正向用例",
"uid" : "2646cc0aa98fada6",
"parentUid" : "652f5f917af3b4f9198ca7870c1da0fd",
"status" : "passed",
"time" : {
"start" : 1731224907377,
"stop" : 1731224907425,
"duration" : 48
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'testAddDem', 'description': 'testAddDem', 'isDefault': 0, 'name': 'testAddDem'}", "'T11'", "{'state': True, 'message': '添加维度成功!'}", "'高'", "'post'", "'json'", "'维度管理'", "'DELETE FROM uc_demension WHERE CODE_=\"testAddDem\";'", "'delete'", "'正向用例'", "None", "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'" ]
}, {
"name" : "正向用例-用户和密码正确",
"uid" : "4edfa96bdd6d8321",
"parentUid" : "652f5f917af3b4f9198ca7870c1da0fd",
"status" : "passed",
"time" : {
"start" : 1731224906307,
"stop" : 1731224906341,
"duration" : 34
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T001'", "{'username': '超级管理员', 'account': 'admin', 'userId': '1', 'expiration': 86400, 'loginStatus': True}", "'高'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'正向用例-用户和密码正确'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-用户名正确-密码错误",
"uid" : "b7a903bd3620730",
"parentUid" : "652f5f917af3b4f9198ca7870c1da0fd",
"status" : "failed",
"time" : {
"start" : 1731224906358,
"stop" : 1731224906412,
"duration" : 54
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'}", "'T002'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码错误'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-用户名正确-密码为特殊字符",
"uid" : "ce9a582510a3e609",
"parentUid" : "652f5f917af3b4f9198ca7870c1da0fd",
"status" : "failed",
"time" : {
"start" : 1731224906895,
"stop" : 1731224906932,
"duration" : 37
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'}", "'T005'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码为特殊字符'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "正向用例",
"uid" : "62edf99fda806e36",
"parentUid" : "652f5f917af3b4f9198ca7870c1da0fd",
"status" : "passed",
"time" : {
"start" : 1731224907487,
"stop" : 1731224907514,
"duration" : 27
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'更新维度'", "{'code': 'testAddDem', 'description': '测试添加的维度', 'isDefault': 0, 'name': '测试添加的维度'}", "'T14'", "{'state': True, 'message': '更新维度成功!'}", "'中'", "'put'", "'application/json'", "'维度管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/demension/v1/dem/updateDem'" ]
}, {
"name" : "反向用例-维度id为空",
"uid" : "ce89b34cbe0a2b6f",
"parentUid" : "652f5f917af3b4f9198ca7870c1da0fd",
"status" : "failed",
"time" : {
"start" : 1731224907845,
"stop" : 1731224907888,
"duration" : 43
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': ''}", "'T14'", "{'state': False, 'message': '维度id不能为空!'}", "'中'", "'DELETE'", "'query'", "'维度管理'", "None", "None", "'反向用例-维度id为空'", "None", "'http://36.139.193.99:8088/api/demension/v2/dem/deleteDemByIds'" ]
}, {
"name" : "正向用例",
"uid" : "33a7b0c8ee575a76",
"parentUid" : "652f5f917af3b4f9198ca7870c1da0fd",
"status" : "passed",
"time" : {
"start" : 1731224907440,
"stop" : 1731224907472,
"duration" : 32
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'设置默认维度'", "{'code': 'testAddDem'}", "'T13'", "{'state': True, 'message': '设置默认维度成功!'}", "'中'", "'put'", "'query'", "'维度管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'" ]
}, {
"name" : "反向用例-密码正确-用户名过短",
"uid" : "b22af31325fb93",
"parentUid" : "652f5f917af3b4f9198ca7870c1da0fd",
"status" : "passed",
"time" : {
"start" : 1731224907055,
"stop" : 1731224907096,
"duration" : 41
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'a', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T008'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-密码正确-用户名过短'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "正向用例",
"uid" : "6496531a8317cb6b",
"parentUid" : "652f5f917af3b4f9198ca7870c1da0fd",
"status" : "passed",
"time" : {
"start" : 1731224907227,
"stop" : 1731224907261,
"duration" : 34
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'刷新token'", "None", "'T011'", "{'loginStatus': True}", "'中'", "'get'", "None", "'认证接口'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/refresh'" ]
}, {
"name" : "反向用例-用户名正确-密码过长",
"uid" : "e46c50724dd47cae",
"parentUid" : "652f5f917af3b4f9198ca7870c1da0fd",
"status" : "failed",
"time" : {
"start" : 1731224906790,
"stop" : 1731224906809,
"duration" : 19
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='}", "'T003'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码过长'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-用户名正确-密码过短",
"uid" : "4b0569de47125e1d",
"parentUid" : "652f5f917af3b4f9198ca7870c1da0fd",
"status" : "failed",
"time" : {
"start" : 1731224906830,
"stop" : 1731224906873,
"duration" : 43
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '1'}", "'T004'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码过短'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "反向用例-用户名正确-密码为空",
"uid" : "4ecfa2b34e55ca7a",
"parentUid" : "652f5f917af3b4f9198ca7870c1da0fd",
"status" : "failed",
"time" : {
"start" : 1731224906953,
"stop" : 1731224906988,
"duration" : 35
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'T006'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-用户名正确-密码为空'", "None", "'http://36.139.193.99:8088/auth'" ]
}, {
"name" : "正向用例",
"uid" : "b11793f110dbb06c",
"parentUid" : "652f5f917af3b4f9198ca7870c1da0fd",
"status" : "failed",
"time" : {
"start" : 1731224907634,
"stop" : 1731224907673,
"duration" : 39
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'保存组织参数'", "{'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]}", "'T17'", "{'state': True, 'message': '保存组织参数成功!'}", "'中'", "'post'", "'query|json'", "'组织管理'", "None", "None", "'正向用例'", "None", "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'" ]
}, {
"name" : "正向用例",
"uid" : "d42367b1218badb4",
"parentUid" : "652f5f917af3b4f9198ca7870c1da0fd",
"status" : "passed",
"time" : {
"start" : 1731224907528,
"stop" : 1731224907589,
"duration" : 61
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'testAddOrg', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'T15'", "{'state': True, 'message': '添加组织成功!'}", "'高'", "'post'", "'json'", "'组织管理'", "{'delete': 'delete from uc_org where CODE_=\"testAddOrg\";', 'select': 'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";'}", "'select|delete'", "'正向用例'", "'demId'", "'http://36.139.193.99:8088/api/org/v1/org/addOrg'" ]
}, {
"name" : "正向用例",
"uid" : "5ed251abcfd9eba9",
"parentUid" : "652f5f917af3b4f9198ca7870c1da0fd",
"status" : "passed",
"time" : {
"start" : 1731224907690,
"stop" : 1731224907763,
"duration" : 73
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加用户'", "{'id': '', 'account': 'testAddUser', 'address': '', 'email': '', 'fullname': '测试添加的用户', 'mobile': '', 'password': '123456', 'photo': '', 'sex': '', 'status': 1}", "'T18'", "{'state': True, 'message': '用户添加成功!'}", "'高'", "'post'", "'json'", "'用户管理'", "'delete from uc_user where ACCOUNT_=\"testAddUser\";'", "'delete'", "'正向用例'", "None", "'http://36.139.193.99:8088/api/user/v1/user/addUser'" ]
}, {
"name" : "反向用例-密码正确-用户名为特殊字符",
"uid" : "c677314e5d275414",
"parentUid" : "652f5f917af3b4f9198ca7870c1da0fd",
"status" : "passed",
"time" : {
"start" : 1731224907153,
"stop" : 1731224907192,
"duration" : 39
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': '㊚㊛囍㊒㊖☑✔☐☒✘卍', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}", "'T010'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'post'", "'application/json'", "'认证接口'", "None", "None", "'反向用例-密码正确-用户名为特殊字符'", "None", "'http://36.139.193.99:8088/auth'" ]
} ],
"uid" : "652f5f917af3b4f9198ca7870c1da0fd"
} ],
"uid" : "752144b3110e66210e256bd7bcfc6cfd"
} ]
}
\ No newline at end of file
launch_status failed=8 1731225408000000000
launch_status broken=1 1731225408000000000
launch_status passed=11 1731225408000000000
launch_status skipped=0 1731225408000000000
launch_status unknown=0 1731225408000000000
launch_time duration=1581 1731225408000000000
launch_time min_duration=0 1731225408000000000
launch_time max_duration=73 1731225408000000000
launch_time sum_duration=754 1731225408000000000
launch_problems product_defects=8 1731225408000000000
launch_problems test_defects=1 1731225408000000000
launch_retries retries=0 1731225408000000000
launch_retries run=20 1731225408000000000
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Allure Report summary mail</title>
</head>
<body>
Mail body
</body>
</html>
launch_status_failed 8
launch_status_broken 1
launch_status_passed 11
launch_status_skipped 0
launch_status_unknown 0
launch_time_duration 1581
launch_time_min_duration 0
launch_time_max_duration 73
launch_time_sum_duration 754
launch_problems_product_defects 8
launch_problems_test_defects 1
launch_retries_retries 0
launch_retries_run 20
module.exports = __webpack_public_path__ + "favicon.ico";
\ No newline at end of file
[ {
"data" : {
"Product defects" : 8,
"Test defects" : 1
}
} ]
\ No newline at end of file
[ {
"data" : {
"duration" : 1581
}
} ]
\ No newline at end of file
[ {
"data" : {
"failed" : 8,
"broken" : 1,
"skipped" : 0,
"passed" : 11,
"unknown" : 0,
"total" : 20
}
} ]
\ No newline at end of file
{
"f113bde1b9e64b7560197c25580bc705" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "e46c50724dd47cae",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"解密密码异常,请检查RSA公钥和私钥配置\",\"code\":200,\"logId\":\"1855517125125971968\"}",
"time" : {
"start" : 1731224906790,
"stop" : 1731224906809,
"duration" : 19
}
} ]
},
"91a3490156690cb2ff979c0e6b6ca1c6" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "4edfa96bdd6d8321",
"status" : "passed",
"time" : {
"start" : 1731224906307,
"stop" : 1731224906341,
"duration" : 34
}
} ]
},
"69af0bd69ed14cf779d192406f1531bc" : {
"statistic" : {
"failed" : 0,
"broken" : 1,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "bba39f778f33c6da",
"status" : "broken",
"statusDetails" : "ValueError: 方法:request_all,传入的媒体类型为:x-www-form-urlencoded, 没有符合的判断分支,可以自行封装,也可以继承之后覆盖",
"time" : {
"start" : 1731224907612,
"stop" : 1731224907612,
"duration" : 0
}
} ]
},
"2844246667da2592af2b30e55c79200d" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "b7a903bd3620730",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"token\":\"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MzEzMTExMzAsImlhdCI6MTczMTIyNDczMH0.nujtbsNRmxSXDP6PJ6dm6GmIZU7vY4kvjzeJ1sjh8mMRliOmtcsr39RJ2VL4vibY7iyZNci0GN0pEdy9ICBmFw\",\"username\":\"超级管理员\",\"account\":\"admin\",\"userId\":\"1\",\"expiration\":86400,\"loginStatus\":true,\"userAttrs\":{\"tenantId\":\"-1\"}}",
"time" : {
"start" : 1731224906358,
"stop" : 1731224906412,
"duration" : 54
}
} ]
},
"a638a20e475b27cdf565aed15cdc30cd" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "33a7b0c8ee575a76",
"status" : "passed",
"time" : {
"start" : 1731224907440,
"stop" : 1731224907472,
"duration" : 32
}
} ]
},
"b06c951d4f2fdd7dc1a5686b0f444aad" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "2646cc0aa98fada6",
"status" : "passed",
"time" : {
"start" : 1731224907377,
"stop" : 1731224907425,
"duration" : 48
}
} ]
},
"45592bfb3b2f0c6bce8b183ef4959ec1" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "d42367b1218badb4",
"status" : "passed",
"time" : {
"start" : 1731224907528,
"stop" : 1731224907589,
"duration" : 61
}
} ]
},
"17597f94d112e1dba9833de4d94ce28f" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "1ea80f386606934",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,用例数据为:{'ids': '1855517127655137280'},期望数据为:{'state': True, 'message': '删除维度成功!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"【测试添加的维度(testAddDem)】的维度下存在组织,不允许删除 \",\"value\":\"\",\"code\":200}",
"time" : {
"start" : 1731224907798,
"stop" : 1731224907825,
"duration" : 27
}
} ]
},
"5b54fc1b7f63783d9155a88280542170" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "ce9a582510a3e609",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125629288448\"}",
"time" : {
"start" : 1731224906895,
"stop" : 1731224906932,
"duration" : 37
}
} ]
},
"ca917b83e98db4327bdb638860f07b10" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "c677314e5d275414",
"status" : "passed",
"time" : {
"start" : 1731224907153,
"stop" : 1731224907192,
"duration" : 39
}
} ]
},
"f4bbe037835d3f5edafde5bd0d60f40b" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "4b0569de47125e1d",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': '1'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125377630208\"}",
"time" : {
"start" : 1731224906830,
"stop" : 1731224906873,
"duration" : 43
}
} ]
},
"494e61fa27e17cb5f6dd716d3d739d58" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "b22af31325fb93",
"status" : "passed",
"time" : {
"start" : 1731224907055,
"stop" : 1731224907096,
"duration" : 41
}
} ]
},
"e3050e2f234ddf0f662637a33116a88d" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "ce89b34cbe0a2b6f",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,用例数据为:{'ids': ''},期望数据为:{'state': False, 'message': '维度id不能为空!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"删除维度失败,维度ids必填\",\"code\":200,\"logId\":\"1855517129550962688\"}",
"time" : {
"start" : 1731224907845,
"stop" : 1731224907888,
"duration" : 43
}
} ]
},
"7d7d78fb8b4eff103011d131874f9c4b" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "5ed251abcfd9eba9",
"status" : "passed",
"time" : {
"start" : 1731224907690,
"stop" : 1731224907763,
"duration" : 73
}
} ]
},
"d6ffe46b175439dde0de98e73817b16c" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "f68b67e663135892",
"status" : "passed",
"time" : {
"start" : 1731224907108,
"stop" : 1731224907141,
"duration" : 33
}
} ]
},
"68f814e29a457ebc6b5588e2d54e220c" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "4ecfa2b34e55ca7a",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': ''},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125880946688\"}",
"time" : {
"start" : 1731224906953,
"stop" : 1731224906988,
"duration" : 35
}
} ]
},
"469c26340b814641be47e4fd9050fbea" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "b11793f110dbb06c",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,用例数据为:{'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]},期望数据为:{'state': True, 'message': '保存组织参数成功!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"Required String parameter 'orgCode' is not present\",\"code\":200,\"logId\":\"1855517128653381632\"}",
"time" : {
"start" : 1731224907634,
"stop" : 1731224907673,
"duration" : 39
}
} ]
},
"ffa44683f901143ac06df43628659da8" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "6496531a8317cb6b",
"status" : "passed",
"time" : {
"start" : 1731224907227,
"stop" : 1731224907261,
"duration" : 34
}
} ]
},
"3bb71f61df1e33b1390cb3a5adf67125" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "7f3cca76f3a19d3b",
"status" : "passed",
"time" : {
"start" : 1731224907007,
"stop" : 1731224907042,
"duration" : 35
}
} ]
},
"5dc8084ea7ab8b6cf5ba6056afd9c959" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "62edf99fda806e36",
"status" : "passed",
"time" : {
"start" : 1731224907487,
"stop" : 1731224907514,
"duration" : 27
}
} ]
}
}
\ No newline at end of file
[ {
"data" : {
"run" : 20,
"retry" : 0
}
} ]
\ 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',
});
})();
.screen-diff__switchers {
margin-bottom: 1em;
}
.screen-diff__switchers label + label {
margin-left: 1em;
}
.screen-diff__overlay {
position: relative;
cursor: col-resize;
}
.screen-diff__container {
overflow-x: auto;
}
.screen-diff__image-over {
top: 0;
left: 0;
bottom: 0;
background: #fff;
position: absolute;
overflow: hidden;
box-shadow: 2px 0 1px -1px #aaa;
}
.screen-diff-error {
color: #fd5a3e;
}
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"total" : 2,
"items" : [ {
"uid" : "ffd1ae226a0f3bdfd500ee5e2644ecd6",
"name" : "BPM_张三",
"statistic" : {
"failed" : 2,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 3
}
}, {
"uid" : "d985ae0a7e3e46d43454642ab73e6d08",
"name" : "BPM_demo",
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
}
} ]
}
\ No newline at end of file
[ {
"data" : {
"Product defects" : 8,
"Test defects" : 1
}
} ]
\ No newline at end of file
{
"total" : 2,
"items" : [ {
"uid" : "8fb3a91ba5aaf9de24cc8a92edc82b5d",
"name" : "Product defects",
"statistic" : {
"failed" : 8,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 8
}
}, {
"uid" : "bdbf199525818fae7a8651db9eafe741",
"name" : "Test defects",
"statistic" : {
"failed" : 0,
"broken" : 1,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
}
} ]
}
\ No newline at end of file
[ {
"data" : {
"duration" : 1581
}
} ]
\ No newline at end of file
[ {
"uid" : "1ea80f386606934",
"name" : "正向用例",
"time" : {
"start" : 1731224907798,
"stop" : 1731224907825,
"duration" : 27
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "f68b67e663135892",
"name" : "反向用例-密码正确-用户名过长",
"time" : {
"start" : 1731224907108,
"stop" : 1731224907141,
"duration" : 33
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "e46c50724dd47cae",
"name" : "反向用例-用户名正确-密码过长",
"time" : {
"start" : 1731224906790,
"stop" : 1731224906809,
"duration" : 19
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "2646cc0aa98fada6",
"name" : "正向用例",
"time" : {
"start" : 1731224907377,
"stop" : 1731224907425,
"duration" : 48
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4ecfa2b34e55ca7a",
"name" : "反向用例-用户名正确-密码为空",
"time" : {
"start" : 1731224906953,
"stop" : 1731224906988,
"duration" : 35
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "b22af31325fb93",
"name" : "反向用例-密码正确-用户名过短",
"time" : {
"start" : 1731224907055,
"stop" : 1731224907096,
"duration" : 41
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "7f3cca76f3a19d3b",
"name" : "反向用例-密码正确-用户名为空",
"time" : {
"start" : 1731224907007,
"stop" : 1731224907042,
"duration" : 35
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4edfa96bdd6d8321",
"name" : "正向用例-用户和密码正确",
"time" : {
"start" : 1731224906307,
"stop" : 1731224906341,
"duration" : 34
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "b11793f110dbb06c",
"name" : "正向用例",
"time" : {
"start" : 1731224907634,
"stop" : 1731224907673,
"duration" : 39
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "bba39f778f33c6da",
"name" : "正向用例",
"time" : {
"start" : 1731224907612,
"stop" : 1731224907612,
"duration" : 0
},
"status" : "broken",
"severity" : "normal"
}, {
"uid" : "6496531a8317cb6b",
"name" : "正向用例",
"time" : {
"start" : 1731224907227,
"stop" : 1731224907261,
"duration" : 34
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "ce89b34cbe0a2b6f",
"name" : "反向用例-维度id为空",
"time" : {
"start" : 1731224907845,
"stop" : 1731224907888,
"duration" : 43
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "33a7b0c8ee575a76",
"name" : "正向用例",
"time" : {
"start" : 1731224907440,
"stop" : 1731224907472,
"duration" : 32
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "62edf99fda806e36",
"name" : "正向用例",
"time" : {
"start" : 1731224907487,
"stop" : 1731224907514,
"duration" : 27
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "d42367b1218badb4",
"name" : "正向用例",
"time" : {
"start" : 1731224907528,
"stop" : 1731224907589,
"duration" : 61
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4b0569de47125e1d",
"name" : "反向用例-用户名正确-密码过短",
"time" : {
"start" : 1731224906830,
"stop" : 1731224906873,
"duration" : 43
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "5ed251abcfd9eba9",
"name" : "正向用例",
"time" : {
"start" : 1731224907690,
"stop" : 1731224907763,
"duration" : 73
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "b7a903bd3620730",
"name" : "反向用例-用户名正确-密码错误",
"time" : {
"start" : 1731224906358,
"stop" : 1731224906412,
"duration" : 54
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "ce9a582510a3e609",
"name" : "反向用例-用户名正确-密码为特殊字符",
"time" : {
"start" : 1731224906895,
"stop" : 1731224906932,
"duration" : 37
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "c677314e5d275414",
"name" : "反向用例-密码正确-用户名为特殊字符",
"time" : {
"start" : 1731224907153,
"stop" : 1731224907192,
"duration" : 39
},
"status" : "passed",
"severity" : "normal"
} ]
\ No newline at end of file
[ {
"data" : {
"failed" : 8,
"broken" : 1,
"skipped" : 0,
"passed" : 11,
"unknown" : 0,
"total" : 20
}
} ]
\ No newline at end of file
[ {
"data" : {
"run" : 20,
"retry" : 0
}
} ]
\ No newline at end of file
[ {
"uid" : "b11793f110dbb06c",
"name" : "正向用例",
"time" : {
"start" : 1731224907634,
"stop" : 1731224907673,
"duration" : 39
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "1ea80f386606934",
"name" : "正向用例",
"time" : {
"start" : 1731224907798,
"stop" : 1731224907825,
"duration" : 27
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "bba39f778f33c6da",
"name" : "正向用例",
"time" : {
"start" : 1731224907612,
"stop" : 1731224907612,
"duration" : 0
},
"status" : "broken",
"severity" : "normal"
}, {
"uid" : "33a7b0c8ee575a76",
"name" : "正向用例",
"time" : {
"start" : 1731224907440,
"stop" : 1731224907472,
"duration" : 32
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "7f3cca76f3a19d3b",
"name" : "反向用例-密码正确-用户名为空",
"time" : {
"start" : 1731224907007,
"stop" : 1731224907042,
"duration" : 35
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "ce89b34cbe0a2b6f",
"name" : "反向用例-维度id为空",
"time" : {
"start" : 1731224907845,
"stop" : 1731224907888,
"duration" : 43
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "b22af31325fb93",
"name" : "反向用例-密码正确-用户名过短",
"time" : {
"start" : 1731224907055,
"stop" : 1731224907096,
"duration" : 41
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "b7a903bd3620730",
"name" : "反向用例-用户名正确-密码错误",
"time" : {
"start" : 1731224906358,
"stop" : 1731224906412,
"duration" : 54
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "ce9a582510a3e609",
"name" : "反向用例-用户名正确-密码为特殊字符",
"time" : {
"start" : 1731224906895,
"stop" : 1731224906932,
"duration" : 37
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "4edfa96bdd6d8321",
"name" : "正向用例-用户和密码正确",
"time" : {
"start" : 1731224906307,
"stop" : 1731224906341,
"duration" : 34
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "c677314e5d275414",
"name" : "反向用例-密码正确-用户名为特殊字符",
"time" : {
"start" : 1731224907153,
"stop" : 1731224907192,
"duration" : 39
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "2646cc0aa98fada6",
"name" : "正向用例",
"time" : {
"start" : 1731224907377,
"stop" : 1731224907425,
"duration" : 48
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "d42367b1218badb4",
"name" : "正向用例",
"time" : {
"start" : 1731224907528,
"stop" : 1731224907589,
"duration" : 61
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "f68b67e663135892",
"name" : "反向用例-密码正确-用户名过长",
"time" : {
"start" : 1731224907108,
"stop" : 1731224907141,
"duration" : 33
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "e46c50724dd47cae",
"name" : "反向用例-用户名正确-密码过长",
"time" : {
"start" : 1731224906790,
"stop" : 1731224906809,
"duration" : 19
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "4b0569de47125e1d",
"name" : "反向用例-用户名正确-密码过短",
"time" : {
"start" : 1731224906830,
"stop" : 1731224906873,
"duration" : 43
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "4ecfa2b34e55ca7a",
"name" : "反向用例-用户名正确-密码为空",
"time" : {
"start" : 1731224906953,
"stop" : 1731224906988,
"duration" : 35
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "5ed251abcfd9eba9",
"name" : "正向用例",
"time" : {
"start" : 1731224907690,
"stop" : 1731224907763,
"duration" : 73
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "62edf99fda806e36",
"name" : "正向用例",
"time" : {
"start" : 1731224907487,
"stop" : 1731224907514,
"duration" : 27
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "6496531a8317cb6b",
"name" : "正向用例",
"time" : {
"start" : 1731224907227,
"stop" : 1731224907261,
"duration" : 34
},
"status" : "passed",
"severity" : "normal"
} ]
\ No newline at end of file
[ {
"uid" : "1ea80f386606934",
"name" : "正向用例",
"time" : {
"start" : 1731224907798,
"stop" : 1731224907825,
"duration" : 27
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "f68b67e663135892",
"name" : "反向用例-密码正确-用户名过长",
"time" : {
"start" : 1731224907108,
"stop" : 1731224907141,
"duration" : 33
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "e46c50724dd47cae",
"name" : "反向用例-用户名正确-密码过长",
"time" : {
"start" : 1731224906790,
"stop" : 1731224906809,
"duration" : 19
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "2646cc0aa98fada6",
"name" : "正向用例",
"time" : {
"start" : 1731224907377,
"stop" : 1731224907425,
"duration" : 48
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4ecfa2b34e55ca7a",
"name" : "反向用例-用户名正确-密码为空",
"time" : {
"start" : 1731224906953,
"stop" : 1731224906988,
"duration" : 35
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "b22af31325fb93",
"name" : "反向用例-密码正确-用户名过短",
"time" : {
"start" : 1731224907055,
"stop" : 1731224907096,
"duration" : 41
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "7f3cca76f3a19d3b",
"name" : "反向用例-密码正确-用户名为空",
"time" : {
"start" : 1731224907007,
"stop" : 1731224907042,
"duration" : 35
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4edfa96bdd6d8321",
"name" : "正向用例-用户和密码正确",
"time" : {
"start" : 1731224906307,
"stop" : 1731224906341,
"duration" : 34
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "b11793f110dbb06c",
"name" : "正向用例",
"time" : {
"start" : 1731224907634,
"stop" : 1731224907673,
"duration" : 39
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "bba39f778f33c6da",
"name" : "正向用例",
"time" : {
"start" : 1731224907612,
"stop" : 1731224907612,
"duration" : 0
},
"status" : "broken",
"severity" : "normal"
}, {
"uid" : "6496531a8317cb6b",
"name" : "正向用例",
"time" : {
"start" : 1731224907227,
"stop" : 1731224907261,
"duration" : 34
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "ce89b34cbe0a2b6f",
"name" : "反向用例-维度id为空",
"time" : {
"start" : 1731224907845,
"stop" : 1731224907888,
"duration" : 43
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "33a7b0c8ee575a76",
"name" : "正向用例",
"time" : {
"start" : 1731224907440,
"stop" : 1731224907472,
"duration" : 32
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "62edf99fda806e36",
"name" : "正向用例",
"time" : {
"start" : 1731224907487,
"stop" : 1731224907514,
"duration" : 27
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "d42367b1218badb4",
"name" : "正向用例",
"time" : {
"start" : 1731224907528,
"stop" : 1731224907589,
"duration" : 61
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4b0569de47125e1d",
"name" : "反向用例-用户名正确-密码过短",
"time" : {
"start" : 1731224906830,
"stop" : 1731224906873,
"duration" : 43
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "5ed251abcfd9eba9",
"name" : "正向用例",
"time" : {
"start" : 1731224907690,
"stop" : 1731224907763,
"duration" : 73
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "b7a903bd3620730",
"name" : "反向用例-用户名正确-密码错误",
"time" : {
"start" : 1731224906358,
"stop" : 1731224906412,
"duration" : 54
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "ce9a582510a3e609",
"name" : "反向用例-用户名正确-密码为特殊字符",
"time" : {
"start" : 1731224906895,
"stop" : 1731224906932,
"duration" : 37
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "c677314e5d275414",
"name" : "反向用例-密码正确-用户名为特殊字符",
"time" : {
"start" : 1731224907153,
"stop" : 1731224907192,
"duration" : 39
},
"status" : "passed",
"severity" : "normal"
} ]
\ No newline at end of file
{
"total" : 2,
"items" : [ {
"uid" : "7a8b7e46177bbd4d1efa8551fea4a38d",
"name" : "test_case.test_demo",
"statistic" : {
"failed" : 5,
"broken" : 0,
"skipped" : 0,
"passed" : 6,
"unknown" : 0,
"total" : 11
}
}, {
"uid" : "a4a59fbb04853758dfa8a5ee7ac8d434",
"name" : "test_case.test_zs",
"statistic" : {
"failed" : 3,
"broken" : 1,
"skipped" : 0,
"passed" : 5,
"unknown" : 0,
"total" : 9
}
} ]
}
\ No newline at end of file
{
"reportName" : "Allure Report",
"testRuns" : [ ],
"statistic" : {
"failed" : 8,
"broken" : 1,
"skipped" : 0,
"passed" : 11,
"unknown" : 0,
"total" : 20
},
"time" : {
"start" : 1731224906307,
"stop" : 1731224907888,
"duration" : 1581,
"minDuration" : 0,
"maxDuration" : 73,
"sumDuration" : 754
}
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
{"uuid": "96f21ac8-65ac-4b3b-b3dc-733bab63e305", "befores": [{"name": "expect_data", "status": "passed", "start": 1731224907153, "stop": 1731224907153}], "start": 1731224907153, "stop": 1731224907203}
\ No newline at end of file
{"uuid": "3a7e2d48-4b9e-4ec2-a0eb-bf1de0c2f0f2", "befores": [{"name": "method", "status": "passed", "start": 1731224907611, "stop": 1731224907611}], "start": 1731224907611, "stop": 1731224907626}
\ No newline at end of file
{"uuid": "e1365a93-4752-4e7d-8998-ca2261e74b03", "befores": [{"name": "level", "status": "passed", "start": 1731224907527, "stop": 1731224907527}], "start": 1731224907527, "stop": 1731224907605}
\ No newline at end of file
{"uuid": "4df75a46-8be8-46e6-a3fa-031e833242ea", "befores": [{"name": "update_key", "status": "passed", "start": 1731224907375, "stop": 1731224907376}], "start": 1731224907375, "stop": 1731224907425}
\ No newline at end of file
{"uuid": "20654e42-2ecb-4b90-bf42-1a9cf269e97a", "befores": [{"name": "expect_data", "status": "passed", "start": 1731224907006, "stop": 1731224907006}], "start": 1731224907006, "stop": 1731224907044}
\ No newline at end of file
{"uuid": "5f96f9e2-9fed-4d8e-a5f1-dfc9a7140dfb", "befores": [{"name": "case_id", "status": "passed", "start": 1731224907006, "stop": 1731224907006}], "start": 1731224907006, "stop": 1731224907051}
\ No newline at end of file
{"uuid": "fc2b43ad-d389-4cb1-ab24-4a049ed56ba9", "befores": [{"name": "module", "status": "passed", "start": 1731224907486, "stop": 1731224907486}], "start": 1731224907486, "stop": 1731224907523}
\ No newline at end of file
{"name": "反向用例-用户名正确-密码为空", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': ''},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125880946688\"}", "trace": "self = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E428050>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T006', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码为空', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json', case_data = {'password': '', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert '账号或密码错误' == '账户错误或该租户未启用'\nE \nE - 账户错误或该租户未启用\nE + 账号或密码错误\n\ntest_case\\test_demo\\test_bpm.py:36: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E428050>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T006', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码为空', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json', case_data = {'password': '', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': ''},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125880946688\"}\n\ntest_case\\test_demo\\test_bpm.py:39: AssertionError"}, "attachments": [{"name": "log", "source": "1db7a65a-e53a-412e-ae08-aa80d1ac0197-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_id", "value": "'T006'"}, {"name": "module", "value": "'认证接口'"}, {"name": "api", "value": "'登录系统'"}, {"name": "title", "value": "'反向用例-用户名正确-密码为空'"}, {"name": "level", "value": "'中'"}, {"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "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": 1731224906953, "stop": 1731224906988, "uuid": "681ad714-02ca-4889-9434-a5db3b48e34d", "historyId": "68f814e29a457ebc6b5588e2d54e220c", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM_demo"}, {"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "MrLee"}, {"name": "thread", "value": "12240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
\ No newline at end of file
{"uuid": "3f39308a-8781-426e-8e35-3215c44bcf3f", "children": ["19f6f33b-9b89-4443-93cf-da97bcf92bac", "91af28f1-0917-49b6-99a7-a7936693b813", "4df3d3f7-71d8-4805-8c94-18290bd84d93", "f13c7574-90e0-42bf-af4f-a7fe6acb1850", "55b765ec-4b87-4a97-aa3e-3bcba0c9c812", "681ad714-02ca-4889-9434-a5db3b48e34d", "72fbae52-01c1-42d0-8ba4-f452173b180b", "cdc03c49-28ad-47e4-bded-41ff3e0e6938", "09a8ce4c-f0b4-41ed-8be5-f3185fea0c05", "1fb213ba-7ea2-4a28-b2af-390dfe51e1a6", "00af9398-bb1b-4cc5-828c-828818cb267f", "ba0960d7-b425-45a2-a391-c9fab6d57f0f", "a7dd2070-c231-4a18-8d0f-e0c1abe997b9", "8b6752d4-06e7-4a25-98e3-2ff1088ab0a5", "a66ee57d-2c37-4efb-88a6-4a371c9b913a", "6804c6a6-86e5-4d6b-93c6-dcbf08750f2b", "8ead9ee3-1dc8-4bb4-af95-43b519c6a5bc", "a60992c9-9e8b-4442-a4e3-077adb8c8b56", "2541793e-841c-4bb9-9a48-0125539478d6", "625eed2c-7c72-4e9e-a3d2-369dd90d643a"], "befores": [{"name": "_session_faker", "status": "passed", "start": 1731224906103, "stop": 1731224906214}], "start": 1731224906103, "stop": 1731224907926}
\ No newline at end of file
{"uuid": "b139584c-4ae3-4052-b6ea-f32c7c3f1de4", "befores": [{"name": "url", "status": "passed", "start": 1731224907611, "stop": 1731224907611}], "start": 1731224907611, "stop": 1731224907625}
\ No newline at end of file
{"uuid": "abfa1fc6-dc1f-428c-b4cf-84107958636a", "befores": [{"name": "method", "status": "passed", "start": 1731224907006, "stop": 1731224907006}], "start": 1731224907006, "stop": 1731224907047}
\ No newline at end of file
{"uuid": "1847a21e-75a3-44ac-bffa-ebecdafa30c2", "befores": [{"name": "module", "status": "passed", "start": 1731224907688, "stop": 1731224907688}], "start": 1731224907688, "stop": 1731224907791}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, 'put', 'http://36.139.193.99:8088/api/demension/v1/dem/updateDem', 'application/json', {'code': 'testAddDem', 'description': '测试添加的维度', 'isDefault': 0, 'name': '测试添加的维度'}, None, None, None)或{}
INFO  root:test_bpm.py:42 断言成功,用例数据为:{'code': 'testAddDem', 'description': '测试添加的维度', 'isDefault': 0, 'name': '测试添加的维度'},期望数据为:{'state': True, 'message': '更新维度成功!'}, 服务器返回的数据为:{"state":true,"message":"更新维度成功!","value":"","code":200}
\ No newline at end of file
{"uuid": "d9a9e668-f89d-4739-9d0a-9136e5943986", "befores": [{"name": "title", "status": "passed", "start": 1731224907152, "stop": 1731224907152}], "start": 1731224907152, "stop": 1731224907218}
\ No newline at end of file
{"uuid": "7e4a0b0f-b098-428a-8d06-5cd1a993d59d", "befores": [{"name": "expect_data", "status": "passed", "start": 1731224907690, "stop": 1731224907690}], "start": 1731224907690, "stop": 1731224907773}
\ No newline at end of file
{"uuid": "7118a854-d640-47a1-a75f-d2dfbfe8b673", "befores": [{"name": "sql_data", "status": "passed", "start": 1731224906306, "stop": 1731224906306}], "start": 1731224906306, "stop": 1731224906343}
\ No newline at end of file
{"uuid": "90990744-df21-4bf0-b227-abb6bb0555f4", "befores": [{"name": "update_key", "status": "passed", "start": 1731224907690, "stop": 1731224907690}], "start": 1731224907690, "stop": 1731224907765}
\ No newline at end of file
{"uuid": "01bafeea-0195-44f7-8ec5-0f6758425fd7", "befores": [{"name": "method", "status": "passed", "start": 1731224906305, "stop": 1731224906306}], "start": 1731224906305, "stop": 1731224906347}
\ No newline at end of file
{"uuid": "9d75d39c-0baf-4644-b98f-e417b8b67074", "befores": [{"name": "sql_type", "status": "passed", "start": 1731224907108, "stop": 1731224907108}], "start": 1731224907108, "stop": 1731224907143}
\ No newline at end of file
{"uuid": "77dd724a-dedf-43ca-b106-79ce8899896f", "befores": [{"name": "case_data", "status": "passed", "start": 1731224907055, "stop": 1731224907055}], "start": 1731224907055, "stop": 1731224907099}
\ No newline at end of file
{"uuid": "e55d1615-588d-4990-aec5-c705b871860a", "befores": [{"name": "expect_data", "status": "passed", "start": 1731224906952, "stop": 1731224906952}], "start": 1731224906952, "stop": 1731224906997}
\ No newline at end of file
{"uuid": "890e90a9-25f2-4425-b2d8-37598761408d", "befores": [{"name": "api", "status": "passed", "start": 1731224907633, "stop": 1731224907633}], "start": 1731224907633, "stop": 1731224907685}
\ No newline at end of file
{"uuid": "0810f78f-d9f9-4721-a071-08d36357e652", "befores": [{"name": "module", "status": "passed", "start": 1731224907633, "stop": 1731224907633}], "start": 1731224907633, "stop": 1731224907685}
\ No newline at end of file
{"uuid": "21cd24f0-6da3-43f7-85a1-46bb3994b92c", "befores": [{"name": "mime", "status": "passed", "start": 1731224907055, "stop": 1731224907055}], "start": 1731224907055, "stop": 1731224907100}
\ No newline at end of file
{"uuid": "b883204b-54f7-4fea-b961-f70781459756", "befores": [{"name": "case_id", "status": "passed", "start": 1731224907439, "stop": 1731224907439}], "start": 1731224907439, "stop": 1731224907482}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,用例数据为:{'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]},期望数据为:{'state': True, 'message': '保存组织参数成功!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"Required String parameter 'orgCode' is not present\",\"code\":200,\"logId\":\"1855517128653381632\"}", "trace": "self = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DC40>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T17', module = '组织管理', api = '保存组织参数', title = '正向用例'\nlevel = '中', method = 'post', url = 'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams', mime = 'query|json'\ncase_data = {'body': [{'alias': 'sz', 'value': 1}], 'query': {'orgCode': 'testAddOrg'}}, expect_data = {'message': '保存组织参数成功!', 'state': True}, sql_type = None, sql_data = None\nupdate_key = None\n\n @allure.epic(\"BPM_张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE assert False == True\nE + where False = <built-in method get of dict object at 0x000001845E5A8840>('state')\nE + where <built-in method get of dict object at 0x000001845E5A8840> = {'code': 200, 'logId': '1855517128653381632', 'message': \"Required String parameter 'orgCode' is not present\", 'state': False}.get\nE + where {'code': 200, 'logId': '1855517128653381632', 'message': \"Required String parameter 'orgCode' is not present\", 'state': False} = json()\nE + where json = <Response [500]>.json\n\ntest_case\\test_zs\\test_bpm.py:37: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DC40>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T17', module = '组织管理', api = '保存组织参数', title = '正向用例'\nlevel = '中', method = 'post', url = 'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams', mime = 'query|json'\ncase_data = {'body': [{'alias': 'sz', 'value': 1}], 'query': {'orgCode': 'testAddOrg'}}, expect_data = {'message': '保存组织参数成功!', 'state': True}, sql_type = None, sql_data = None\nupdate_key = None\n\n @allure.epic(\"BPM_张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]},期望数据为:{'state': True, 'message': '保存组织参数成功!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"Required String parameter 'orgCode' is not present\",\"code\":200,\"logId\":\"1855517128653381632\"}\n\ntest_case\\test_zs\\test_bpm.py:40: AssertionError"}, "attachments": [{"name": "log", "source": "47d336eb-f989-4b55-8949-cbd2c6cd00c6-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_id", "value": "'T17'"}, {"name": "module", "value": "'组织管理'"}, {"name": "api", "value": "'保存组织参数'"}, {"name": "title", "value": "'正向用例'"}, {"name": "level", "value": "'中'"}, {"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'"}, {"name": "mime", "value": "'query|json'"}, {"name": "case_data", "value": "{'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]}"}, {"name": "expect_data", "value": "{'state': True, 'message': '保存组织参数成功!'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1731224907634, "stop": 1731224907673, "uuid": "8ead9ee3-1dc8-4bb4-af95-43b519c6a5bc", "historyId": "469c26340b814641be47e4fd9050fbea", "testCaseId": "d417f835dc1c783689c0cac5e3ed50b5", "fullName": "test_case.test_zs.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "保存组织参数"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM_张三"}, {"name": "parentSuite", "value": "test_case.test_zs"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "MrLee"}, {"name": "thread", "value": "12240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_zs.test_bpm"}]}
\ No newline at end of file
{"uuid": "3713614f-231f-45f7-b854-f1441ae3ad1e", "befores": [{"name": "api", "status": "passed", "start": 1731224907844, "stop": 1731224907844}], "start": 1731224907844, "stop": 1731224907922}
\ No newline at end of file
{"uuid": "da76d991-90cc-4278-813d-2ce8577cb16b", "befores": [{"name": "api", "status": "passed", "start": 1731224906952, "stop": 1731224906952}], "start": 1731224906952, "stop": 1731224907002}
\ No newline at end of file
{"uuid": "005a6100-5549-4682-992a-da0cb96b1d2d", "befores": [{"name": "sql_data", "status": "passed", "start": 1731224907797, "stop": 1731224907797}], "start": 1731224907797, "stop": 1731224907834}
\ No newline at end of file
{"uuid": "51920a6b-b9fc-4f86-9fe9-18f4e2e26247", "befores": [{"name": "api", "status": "passed", "start": 1731224906829, "stop": 1731224906829}], "start": 1731224906829, "stop": 1731224906889}
\ No newline at end of file
{"uuid": "d2614258-0c63-4b6d-a4a5-b3d00f405460", "befores": [{"name": "title", "status": "passed", "start": 1731224907690, "stop": 1731224907690}], "start": 1731224907690, "stop": 1731224907790}
\ No newline at end of file
{"uuid": "8bd0920e-bc99-4290-88b4-91a8280246e7", "befores": [{"name": "method", "status": "passed", "start": 1731224907055, "stop": 1731224907055}], "start": 1731224907055, "stop": 1731224907101}
\ No newline at end of file
{"uuid": "4d3f6ce6-05fa-423a-abe8-c3197ac01bf1", "befores": [{"name": "case_data", "status": "passed", "start": 1731224906357, "stop": 1731224906357}], "start": 1731224906357, "stop": 1731224906782}
\ No newline at end of file
{"uuid": "6f3ed63a-0b4c-45d6-9344-c583d0248524", "befores": [{"name": "url", "status": "passed", "start": 1731224907845, "stop": 1731224907845}], "start": 1731224907845, "stop": 1731224907920}
\ No newline at end of file
{"uuid": "19d48138-5294-4e3d-be56-bd837164d964", "befores": [{"name": "mime", "status": "passed", "start": 1731224906306, "stop": 1731224906306}], "start": 1731224906306, "stop": 1731224906345}
\ No newline at end of file
{"uuid": "a0f885b2-ca78-4a75-a5eb-aa643dd8b365", "befores": [{"name": "case_id", "status": "passed", "start": 1731224907611, "stop": 1731224907611}], "start": 1731224907611, "stop": 1731224907630}
\ No newline at end of file
{"uuid": "867af039-997e-47af-86b3-49f3d2f5e776", "befores": [{"name": "sql_type", "status": "passed", "start": 1731224906829, "stop": 1731224906829}], "start": 1731224906829, "stop": 1731224906882}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'post', 'http://36.139.193.99:8088/auth', 'application/json', {'username': 'admin', 'password': ''}, None, None, None)或{}
ERROR  root:test_bpm.py:38 断言失败,用例数据为:{'username': 'admin', 'password': ''},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"state":false,"message":"账号或密码错误","code":200,"logId":"1855517125880946688"}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, 'post', 'http://36.139.193.99:8088/api/org/v1/org/addOrg', 'json', {'code': 'testAddOrg', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}, 'select|delete', {'delete': 'delete from uc_org where CODE_="testAddOrg";', 'select': 'SELECT ID_ FROM uc_demension WHERE CODE_="testAddDem";'}, 'demId')或{}
INFO  root:__init__.py:46 执行的功能为:delete, 功能描述为:执行删除的sql语句, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\db.py, 所在的行为:33行,形参的值为:(<MyApiAutoTest_v3_3.common.db.DB object at 0x000001845E4F68D0>, 'delete from uc_org where CODE_="testAddOrg";')或{}
INFO  root:__init__.py:46 执行的功能为:select, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\db.py, 所在的行为:45行,形参的值为:(<MyApiAutoTest_v3_3.common.db.DB object at 0x000001845E4F68D0>, 'SELECT ID_ FROM uc_demension WHERE CODE_="testAddDem";')或{}
INFO  root:test_bpm.py:42 断言成功,用例数据为:{'code': 'testAddOrg', 'demId': '1855517127655137280', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'},期望数据为:{'state': True, 'message': '添加组织成功!'}, 服务器返回的数据为:{"state":true,"message":"添加组织成功!","value":"","code":200}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "08419c7c-a659-4335-94ed-4a524d092597-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_id", "value": "'T14'"}, {"name": "module", "value": "'维度管理'"}, {"name": "api", "value": "'更新维度'"}, {"name": "title", "value": "'正向用例'"}, {"name": "level", "value": "'中'"}, {"name": "method", "value": "'put'"}, {"name": "url", "value": "'http://36.139.193.99:8088/api/demension/v1/dem/updateDem'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'code': 'testAddDem', 'description': '测试添加的维度', 'isDefault': 0, 'name': '测试添加的维度'}"}, {"name": "expect_data", "value": "{'state': True, 'message': '更新维度成功!'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1731224907487, "stop": 1731224907514, "uuid": "8b6752d4-06e7-4a25-98e3-2ff1088ab0a5", "historyId": "5dc8084ea7ab8b6cf5ba6056afd9c959", "testCaseId": "d417f835dc1c783689c0cac5e3ed50b5", "fullName": "test_case.test_zs.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "更新维度"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM_张三"}, {"name": "parentSuite", "value": "test_case.test_zs"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "MrLee"}, {"name": "thread", "value": "12240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_zs.test_bpm"}]}
\ No newline at end of file
{"uuid": "4ee399d8-bd4b-4d27-8472-2001758dee90", "befores": [{"name": "module", "status": "passed", "start": 1731224907527, "stop": 1731224907527}], "start": 1731224907527, "stop": 1731224907608}
\ No newline at end of file
{"uuid": "34a8ec59-d059-428a-9899-aa3e949599b3", "befores": [{"name": "case_data", "status": "passed", "start": 1731224906306, "stop": 1731224906306}], "start": 1731224906306, "stop": 1731224906345}
\ No newline at end of file
{"uuid": "77286109-51e1-41f6-9764-a687c4ffaae3", "befores": [{"name": "level", "status": "passed", "start": 1731224907055, "stop": 1731224907055}], "start": 1731224907055, "stop": 1731224907101}
\ No newline at end of file
{"uuid": "3f49763a-9011-4629-9155-9812aa96fd69", "befores": [{"name": "level", "status": "passed", "start": 1731224907690, "stop": 1731224907690}], "start": 1731224907690, "stop": 1731224907789}
\ No newline at end of file
{"uuid": "cb559051-5e8a-4f61-89a9-431628b1c739", "befores": [{"name": "update_key", "status": "passed", "start": 1731224907108, "stop": 1731224907108}], "start": 1731224907108, "stop": 1731224907142}
\ No newline at end of file
{"uuid": "3806a446-d98b-4386-b8fa-a10f9a82178c", "befores": [{"name": "case_data", "status": "passed", "start": 1731224907486, "stop": 1731224907486}], "start": 1731224907486, "stop": 1731224907518}
\ No newline at end of file
{"uuid": "665cc64c-ac77-4f1f-97b9-81d50390b58d", "befores": [{"name": "expect_data", "status": "passed", "start": 1731224907439, "stop": 1731224907439}], "start": 1731224907439, "stop": 1731224907476}
\ No newline at end of file
{"uuid": "44fbb6a2-08f4-43a4-b5a4-83363febf496", "befores": [{"name": "module", "status": "passed", "start": 1731224907226, "stop": 1731224907226}], "start": 1731224907226, "stop": 1731224907273}
\ No newline at end of file
{"uuid": "44fdfc66-762e-4cd1-8687-0fda612ccdd8", "befores": [{"name": "expect_data", "status": "passed", "start": 1731224906357, "stop": 1731224906357}], "start": 1731224906357, "stop": 1731224906782}
\ No newline at end of file
{"uuid": "7bafe218-52dd-4259-b1fc-57c8576d0b04", "befores": [{"name": "case_data", "status": "passed", "start": 1731224907153, "stop": 1731224907153}], "start": 1731224907153, "stop": 1731224907206}
\ No newline at end of file
{"uuid": "7165f614-2ebb-4078-8bff-afc4bef9a656", "befores": [{"name": "method", "status": "passed", "start": 1731224906894, "stop": 1731224906894}], "start": 1731224906894, "stop": 1731224906945}
\ No newline at end of file
{"uuid": "93af785b-5699-4d24-8707-282916ce9255", "befores": [{"name": "expect_data", "status": "passed", "start": 1731224906790, "stop": 1731224906790}], "start": 1731224906790, "stop": 1731224906818}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, 'post', 'http://36.139.193.99:8088/api/user/v1/user/addUser', 'json', {'id': '', 'account': 'testAddUser', 'address': '', 'email': '', 'fullname': '测试添加的用户', 'mobile': '', 'password': '123456', 'photo': '', 'sex': '', 'status': 1}, 'delete', 'delete from uc_user where ACCOUNT_="testAddUser";', None)或{}
INFO  root:__init__.py:46 执行的功能为:delete, 功能描述为:执行删除的sql语句, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\db.py, 所在的行为:33行,形参的值为:(<MyApiAutoTest_v3_3.common.db.DB object at 0x000001845E4F68D0>, 'delete from uc_user where ACCOUNT_="testAddUser";')或{}
INFO  root:test_bpm.py:42 断言成功,用例数据为:{'id': '', 'account': 'testAddUser', 'address': '', 'email': '', 'fullname': '测试添加的用户', 'mobile': '', 'password': '123456', 'photo': '', 'sex': '', 'status': 1},期望数据为:{'state': True, 'message': '用户添加成功!'}, 服务器返回的数据为:{"state":true,"message":"用户添加成功!","value":"","code":200}
\ No newline at end of file
{"uuid": "cd274f76-4065-4a02-86b1-bd9eb6239fc0", "befores": [{"name": "module", "status": "passed", "start": 1731224906829, "stop": 1731224906829}], "start": 1731224906829, "stop": 1731224906890}
\ No newline at end of file
{"uuid": "102ac9ad-a049-454c-876b-964a09cc258f", "befores": [{"name": "title", "status": "passed", "start": 1731224907611, "stop": 1731224907611}], "start": 1731224907611, "stop": 1731224907627}
\ No newline at end of file
{"uuid": "45de203e-3ef9-40a7-b72f-c22f7809d6f3", "befores": [{"name": "module", "status": "passed", "start": 1731224907439, "stop": 1731224907439}], "start": 1731224907439, "stop": 1731224907482}
\ No newline at end of file
{"uuid": "b74c3a32-9e6a-478c-b6f5-c89fa44ae4e2", "befores": [{"name": "case_id", "status": "passed", "start": 1731224907796, "stop": 1731224907796}], "start": 1731224907796, "stop": 1731224907841}
\ No newline at end of file
{"uuid": "f441eb7f-9e69-4fa8-9d39-db26ff551825", "befores": [{"name": "api", "status": "passed", "start": 1731224907107, "stop": 1731224907107}], "start": 1731224907107, "stop": 1731224907148}
\ No newline at end of file
{"uuid": "6dbf8598-d2bf-4e5d-a812-dc5017b3f083", "befores": [{"name": "case_data", "status": "passed", "start": 1731224907634, "stop": 1731224907634}], "start": 1731224907634, "stop": 1731224907682}
\ No newline at end of file
{"uuid": "0ca0e463-cbb3-4fed-a0b1-aff4fa71ff80", "befores": [{"name": "mime", "status": "passed", "start": 1731224907374, "stop": 1731224907374}], "start": 1731224907374, "stop": 1731224907431}
\ No newline at end of file
{"uuid": "766dbfc0-42dd-4417-944f-99c9ac23db26", "befores": [{"name": "sql_type", "status": "passed", "start": 1731224907439, "stop": 1731224907439}], "start": 1731224907439, "stop": 1731224907473}
\ No newline at end of file
{"uuid": "94d6cc51-9fe6-4285-9b45-c43c4384b30e", "befores": [{"name": "update_key", "status": "passed", "start": 1731224906790, "stop": 1731224906790}], "start": 1731224906790, "stop": 1731224906816}
\ No newline at end of file
{"uuid": "385e56b0-225e-4502-a8d4-59d22eb00186", "befores": [{"name": "title", "status": "passed", "start": 1731224907844, "stop": 1731224907844}], "start": 1731224907844, "stop": 1731224907921}
\ No newline at end of file
{"uuid": "b4e846fd-663a-4c83-8d1e-623cd082cbcc", "befores": [{"name": "mime", "status": "passed", "start": 1731224907611, "stop": 1731224907611}], "start": 1731224907611, "stop": 1731224907624}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,用例数据为:{'ids': '1855517127655137280'},期望数据为:{'state': True, 'message': '删除维度成功!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"【测试添加的维度(testAddDem)】的维度下存在组织,不允许删除 \",\"value\":\"\",\"code\":200}", "trace": "self = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DB20>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T12', module = '维度管理', api = '根据维度编码删除维度', title = '正向用例'\nlevel = '中', method = 'DELETE', url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', mime = 'query', case_data = {'ids': '1855517127655137280'}\nexpect_data = {'message': '删除维度成功!', 'state': True}, sql_type = 'select', sql_data = 'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";', update_key = 'ids'\n\n @allure.epic(\"BPM_张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert False == True\nE + where False = <built-in method get of dict object at 0x000001845E58BC00>('state')\nE + where <built-in method get of dict object at 0x000001845E58BC00> = {'code': 200, 'message': '【测试添加的维度(testAddDem)】的维度下存在组织,不允许删除 ', 'state': False, 'value': ''}.get\nE + where {'code': 200, 'message': '【测试添加的维度(testAddDem)】的维度下存在组织,不允许删除 ', 'state': False, 'value': ''} = json()\nE + where json = <Response [200]>.json\n\ntest_case\\test_zs\\test_bpm.py:37: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DB20>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T12', module = '维度管理', api = '根据维度编码删除维度', title = '正向用例'\nlevel = '中', method = 'DELETE', url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', mime = 'query', case_data = {'ids': '1855517127655137280'}\nexpect_data = {'message': '删除维度成功!', 'state': True}, sql_type = 'select', sql_data = 'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";', update_key = 'ids'\n\n @allure.epic(\"BPM_张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'ids': '1855517127655137280'},期望数据为:{'state': True, 'message': '删除维度成功!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"【测试添加的维度(testAddDem)】的维度下存在组织,不允许删除 \",\"value\":\"\",\"code\":200}\n\ntest_case\\test_zs\\test_bpm.py:40: AssertionError"}, "attachments": [{"name": "log", "source": "8d02f5c7-321d-48f9-954f-4478de6f240a-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_id", "value": "'T12'"}, {"name": "module", "value": "'维度管理'"}, {"name": "api", "value": "'根据维度编码删除维度'"}, {"name": "title", "value": "'正向用例'"}, {"name": "level", "value": "'中'"}, {"name": "method", "value": "'DELETE'"}, {"name": "url", "value": "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'"}, {"name": "mime", "value": "'query'"}, {"name": "case_data", "value": "{'ids': '需要更新'}"}, {"name": "expect_data", "value": "{'state': True, 'message': '删除维度成功!'}"}, {"name": "sql_type", "value": "'select'"}, {"name": "sql_data", "value": "'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";'"}, {"name": "update_key", "value": "'ids'"}], "start": 1731224907798, "stop": 1731224907825, "uuid": "2541793e-841c-4bb9-9a48-0125539478d6", "historyId": "17597f94d112e1dba9833de4d94ce28f", "testCaseId": "d417f835dc1c783689c0cac5e3ed50b5", "fullName": "test_case.test_zs.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "根据维度编码删除维度"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM_张三"}, {"name": "parentSuite", "value": "test_case.test_zs"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "MrLee"}, {"name": "thread", "value": "12240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_zs.test_bpm"}]}
\ No newline at end of file
{"uuid": "5a695d05-45b0-4e71-a6e2-01b46b510664", "befores": [{"name": "mime", "status": "passed", "start": 1731224907107, "stop": 1731224907107}], "start": 1731224907107, "stop": 1731224907145}
\ No newline at end of file
{"uuid": "49d95f21-feb1-49c6-8a1a-3329e44e5f49", "befores": [{"name": "case_id", "status": "passed", "start": 1731224907527, "stop": 1731224907527}], "start": 1731224907527, "stop": 1731224907608}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:get_sql_connect, 功能描述为:根据key获取数据库连接信息, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:29行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E429280>, 'host')或{}
INFO  root:__init__.py:46 执行的功能为:get_sql_connect, 功能描述为:根据key获取数据库连接信息, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:29行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E429280>, 'port')或{}
INFO  root:__init__.py:46 执行的功能为:get_sql_connect, 功能描述为:根据key获取数据库连接信息, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:29行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E429280>, 'username')或{}
INFO  root:__init__.py:46 执行的功能为:get_sql_connect, 功能描述为:根据key获取数据库连接信息, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:29行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E429280>, 'password')或{}
INFO  root:__init__.py:46 执行的功能为:get_sql_connect, 功能描述为:根据key获取数据库连接信息, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:29行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E429280>, 'database')或{}
INFO  root:__init__.py:46 执行的功能为:get_host, 功能描述为:根据key获取域名, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:24行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E460260>, 'bpm')或{}
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'post', 'http://36.139.193.99:8088/auth', 'application/json', {'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}, None, None, None)或{}
INFO  root:test_bpm.py:41 断言成功,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'username': '超级管理员', 'account': 'admin', 'userId': '1', 'expiration': 86400, 'loginStatus': True}, 服务器返回的数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MzEzMTExMzAsImlhdCI6MTczMTIyNDczMH0.nujtbsNRmxSXDP6PJ6dm6GmIZU7vY4kvjzeJ1sjh8mMRliOmtcsr39RJ2VL4vibY7iyZNci0GN0pEdy9ICBmFw","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
\ No newline at end of file
{"uuid": "b562e41a-0f81-4ff0-8542-649a96b7f8e2", "befores": [{"name": "sql_data", "status": "passed", "start": 1731224906829, "stop": 1731224906829}], "start": 1731224906829, "stop": 1731224906881}
\ No newline at end of file
{"name": "反向用例-维度id为空", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,用例数据为:{'ids': ''},期望数据为:{'state': False, 'message': '维度id不能为空!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"删除维度失败,维度ids必填\",\"code\":200,\"logId\":\"1855517129550962688\"}", "trace": "self = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DA90>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T14', module = '维度管理', api = '根据维度编码删除维度'\ntitle = '反向用例-维度id为空', level = '中', method = 'DELETE', url = 'http://36.139.193.99:8088/api/demension/v2/dem/deleteDemByIds', mime = 'query', case_data = {'ids': ''}\nexpect_data = {'message': '维度id不能为空!', '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(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert '删除维度失败,维度ids必填' == '维度id不能为空!'\nE \nE - 维度id不能为空!\nE + 删除维度失败,维度ids必填\n\ntest_case\\test_zs\\test_bpm.py:37: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DA90>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T14', module = '维度管理', api = '根据维度编码删除维度'\ntitle = '反向用例-维度id为空', level = '中', method = 'DELETE', url = 'http://36.139.193.99:8088/api/demension/v2/dem/deleteDemByIds', mime = 'query', case_data = {'ids': ''}\nexpect_data = {'message': '维度id不能为空!', '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(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'ids': ''},期望数据为:{'state': False, 'message': '维度id不能为空!'}, 服务器返回的数据为:{\"state\":false,\"message\":\"删除维度失败,维度ids必填\",\"code\":200,\"logId\":\"1855517129550962688\"}\n\ntest_case\\test_zs\\test_bpm.py:40: AssertionError"}, "attachments": [{"name": "log", "source": "a449c85c-a51e-4ec8-8290-99ebc1958ef6-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_id", "value": "'T14'"}, {"name": "module", "value": "'维度管理'"}, {"name": "api", "value": "'根据维度编码删除维度'"}, {"name": "title", "value": "'反向用例-维度id为空'"}, {"name": "level", "value": "'中'"}, {"name": "method", "value": "'DELETE'"}, {"name": "url", "value": "'http://36.139.193.99:8088/api/demension/v2/dem/deleteDemByIds'"}, {"name": "mime", "value": "'query'"}, {"name": "case_data", "value": "{'ids': ''}"}, {"name": "expect_data", "value": "{'state': False, 'message': '维度id不能为空!'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1731224907845, "stop": 1731224907888, "uuid": "625eed2c-7c72-4e9e-a3d2-369dd90d643a", "historyId": "e3050e2f234ddf0f662637a33116a88d", "testCaseId": "d417f835dc1c783689c0cac5e3ed50b5", "fullName": "test_case.test_zs.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "根据维度编码删除维度"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM_张三"}, {"name": "parentSuite", "value": "test_case.test_zs"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "MrLee"}, {"name": "thread", "value": "12240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_zs.test_bpm"}]}
\ No newline at end of file
{"uuid": "55e0818f-53ee-4fea-9af4-d47246d87540", "befores": [{"name": "api", "status": "passed", "start": 1731224907152, "stop": 1731224907152}], "start": 1731224907152, "stop": 1731224907220}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "b32fe2a3-cb59-48c8-817e-92138ac19b1a-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_id", "value": "'T13'"}, {"name": "module", "value": "'维度管理'"}, {"name": "api", "value": "'设置默认维度'"}, {"name": "title", "value": "'正向用例'"}, {"name": "level", "value": "'中'"}, {"name": "method", "value": "'put'"}, {"name": "url", "value": "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'"}, {"name": "mime", "value": "'query'"}, {"name": "case_data", "value": "{'code': 'testAddDem'}"}, {"name": "expect_data", "value": "{'state': True, 'message': '设置默认维度成功!'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1731224907440, "stop": 1731224907472, "uuid": "a7dd2070-c231-4a18-8d0f-e0c1abe997b9", "historyId": "a638a20e475b27cdf565aed15cdc30cd", "testCaseId": "d417f835dc1c783689c0cac5e3ed50b5", "fullName": "test_case.test_zs.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "设置默认维度"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM_张三"}, {"name": "parentSuite", "value": "test_case.test_zs"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "MrLee"}, {"name": "thread", "value": "12240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_zs.test_bpm"}]}
\ No newline at end of file
{"uuid": "49383b73-146f-46d6-98fe-85cf61010b66", "befores": [{"name": "level", "status": "passed", "start": 1731224906952, "stop": 1731224906952}], "start": 1731224906952, "stop": 1731224907000}
\ No newline at end of file
{"uuid": "519a80b8-93c9-4008-a67f-61695e97cd89", "befores": [{"name": "title", "status": "passed", "start": 1731224906357, "stop": 1731224906357}], "start": 1731224906357, "stop": 1731224906785}
\ No newline at end of file
{"uuid": "df597f18-0384-4d68-8268-b703001ef728", "befores": [{"name": "title", "status": "passed", "start": 1731224907796, "stop": 1731224907796}], "start": 1731224907796, "stop": 1731224907838}
\ No newline at end of file
{"uuid": "4a232487-22bd-48b6-a311-1e45b85a06a1", "befores": [{"name": "sql_data", "status": "passed", "start": 1731224907612, "stop": 1731224907612}], "start": 1731224907612, "stop": 1731224907622}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "26e5a230-275b-45ac-9812-dc8b9d0f9f99-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_id", "value": "'T18'"}, {"name": "module", "value": "'用户管理'"}, {"name": "api", "value": "'添加用户'"}, {"name": "title", "value": "'正向用例'"}, {"name": "level", "value": "'高'"}, {"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/api/user/v1/user/addUser'"}, {"name": "mime", "value": "'json'"}, {"name": "case_data", "value": "{'id': '', 'account': 'testAddUser', 'address': '', 'email': '', 'fullname': '测试添加的用户', '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_=\"testAddUser\";'"}, {"name": "update_key", "value": "None"}], "start": 1731224907690, "stop": 1731224907763, "uuid": "a60992c9-9e8b-4442-a4e3-077adb8c8b56", "historyId": "7d7d78fb8b4eff103011d131874f9c4b", "testCaseId": "d417f835dc1c783689c0cac5e3ed50b5", "fullName": "test_case.test_zs.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "用户管理"}, {"name": "story", "value": "添加用户"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM_张三"}, {"name": "parentSuite", "value": "test_case.test_zs"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "MrLee"}, {"name": "thread", "value": "12240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_zs.test_bpm"}]}
\ No newline at end of file
{"uuid": "6acd6792-0e97-4c6d-b4ef-c9c76cdd883c", "befores": [{"name": "case_data", "status": "passed", "start": 1731224906829, "stop": 1731224906829}], "start": 1731224906829, "stop": 1731224906884}
\ No newline at end of file
{"uuid": "96cb6d82-c400-4e1e-baca-7ff758a7748c", "befores": [{"name": "expect_data", "status": "passed", "start": 1731224907527, "stop": 1731224907527}], "start": 1731224907527, "stop": 1731224907600}
\ No newline at end of file
{"uuid": "81ce0097-c835-42f5-b7cb-8cd20b3f6a21", "befores": [{"name": "title", "status": "passed", "start": 1731224906790, "stop": 1731224906790}], "start": 1731224906790, "stop": 1731224906823}
\ No newline at end of file
{"uuid": "e64ce953-0a2a-40a1-993e-da252f9d245c", "befores": [{"name": "url", "status": "passed", "start": 1731224906306, "stop": 1731224906306}], "start": 1731224906306, "stop": 1731224906346}
\ No newline at end of file
{"uuid": "1d10de13-4194-4311-963d-f949f187987a", "befores": [{"name": "expect_data", "status": "passed", "start": 1731224906306, "stop": 1731224906306}], "start": 1731224906306, "stop": 1731224906344}
\ No newline at end of file
{"uuid": "5e4d397d-9058-4eb5-8e74-f971b0d70bec", "befores": [{"name": "sql_type", "status": "passed", "start": 1731224907690, "stop": 1731224907690}], "start": 1731224907690, "stop": 1731224907771}
\ No newline at end of file
{"uuid": "29fb020f-9751-413a-8755-061cbde1a329", "befores": [{"name": "sql_data", "status": "passed", "start": 1731224906790, "stop": 1731224906790}], "start": 1731224906790, "stop": 1731224906817}
\ No newline at end of file
{"uuid": "5c0d6235-e701-4efd-a71b-819b7e37e3b9", "befores": [{"name": "method", "status": "passed", "start": 1731224906790, "stop": 1731224906790}], "start": 1731224906790, "stop": 1731224906821}
\ No newline at end of file
{"uuid": "6c83f267-f796-49c5-8f7a-4dffbaad6dda", "befores": [{"name": "api", "status": "passed", "start": 1731224907796, "stop": 1731224907796}], "start": 1731224907796, "stop": 1731224907840}
\ No newline at end of file
{"uuid": "49fc32ad-4b10-4ab0-9ac7-709a1fd7c565", "befores": [{"name": "title", "status": "passed", "start": 1731224907226, "stop": 1731224907226}], "start": 1731224907226, "stop": 1731224907271}
\ No newline at end of file
{"uuid": "788a9042-f69d-4d58-a201-a2c986fa888d", "befores": [{"name": "api", "status": "passed", "start": 1731224907690, "stop": 1731224907690}], "start": 1731224907688, "stop": 1731224907790}
\ No newline at end of file
{"uuid": "0919baf8-656f-4544-b60d-a0759732c1f9", "befores": [{"name": "case_id", "status": "passed", "start": 1731224907633, "stop": 1731224907633}], "start": 1731224907633, "stop": 1731224907686}
\ No newline at end of file
{"uuid": "28cdcf70-8b0f-4c0f-af7d-b42fc11ec5e4", "befores": [{"name": "sql_type", "status": "passed", "start": 1731224907227, "stop": 1731224907227}], "start": 1731224907227, "stop": 1731224907266}
\ No newline at end of file
{"uuid": "e3b23b13-1e07-4290-8600-08910a5dfbf1", "befores": [{"name": "case_id", "status": "passed", "start": 1731224906952, "stop": 1731224906952}], "start": 1731224906952, "stop": 1731224907003}
\ No newline at end of file
{"uuid": "fbb88bd3-4728-491f-ae97-48559e6e9dd4", "befores": [{"name": "case_id", "status": "passed", "start": 1731224907844, "stop": 1731224907844}], "start": 1731224907844, "stop": 1731224907924}
\ No newline at end of file
{"name": "反向用例-用户名正确-密码过长", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"解密密码异常,请检查RSA公钥和私钥配置\",\"code\":200,\"logId\":\"1855517125125971968\"}", "trace": "self = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E42A4E0>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T003', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码过长', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json'\ncase_data = {'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEj...LfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert '解密密码异常,请检查RSA公钥和私钥配置' == '账户错误或该租户未启用'\nE \nE - 账户错误或该租户未启用\nE + 解密密码异常,请检查RSA公钥和私钥配置\n\ntest_case\\test_demo\\test_bpm.py:36: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E42A4E0>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T003', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码过长', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json'\ncase_data = {'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEj...LfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"解密密码异常,请检查RSA公钥和私钥配置\",\"code\":200,\"logId\":\"1855517125125971968\"}\n\ntest_case\\test_demo\\test_bpm.py:39: AssertionError"}, "attachments": [{"name": "log", "source": "ae918bd3-b573-4a74-be6e-8fb420fbb21c-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_id", "value": "'T003'"}, {"name": "module", "value": "'认证接口'"}, {"name": "api", "value": "'登录系统'"}, {"name": "title", "value": "'反向用例-用户名正确-密码过长'"}, {"name": "level", "value": "'中'"}, {"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1731224906790, "stop": 1731224906809, "uuid": "4df3d3f7-71d8-4805-8c94-18290bd84d93", "historyId": "f113bde1b9e64b7560197c25580bc705", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM_demo"}, {"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "MrLee"}, {"name": "thread", "value": "12240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
\ No newline at end of file
{"uuid": "fd09c913-0570-45fe-bb22-3f1c4cd9774c", "befores": [{"name": "case_data", "status": "passed", "start": 1731224907845, "stop": 1731224907845}], "start": 1731224907845, "stop": 1731224907918}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "1df35848-3619-499b-a8e3-aaef1afa89b4-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_id", "value": "'T15'"}, {"name": "module", "value": "'组织管理'"}, {"name": "api", "value": "'添加组织'"}, {"name": "title", "value": "'正向用例'"}, {"name": "level", "value": "'高'"}, {"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/api/org/v1/org/addOrg'"}, {"name": "mime", "value": "'json'"}, {"name": "case_data", "value": "{'code': 'testAddOrg', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'state': True, 'message': '添加组织成功!'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"name": "sql_data", "value": "{'delete': 'delete from uc_org where CODE_=\"testAddOrg\";', 'select': 'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";'}"}, {"name": "update_key", "value": "'demId'"}], "start": 1731224907528, "stop": 1731224907589, "uuid": "a66ee57d-2c37-4efb-88a6-4a371c9b913a", "historyId": "45592bfb3b2f0c6bce8b183ef4959ec1", "testCaseId": "d417f835dc1c783689c0cac5e3ed50b5", "fullName": "test_case.test_zs.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "添加组织"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM_张三"}, {"name": "parentSuite", "value": "test_case.test_zs"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "MrLee"}, {"name": "thread", "value": "12240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_zs.test_bpm"}]}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, 'post', 'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams', 'query|json', {'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]}, None, None, None)或{}
ERROR  root:test_bpm.py:39 断言失败,用例数据为:{'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]},期望数据为:{'state': True, 'message': '保存组织参数成功!'}, 服务器返回的数据为:{"state":false,"message":"Required String parameter 'orgCode' is not present","code":200,"logId":"1855517128653381632"}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'get', 'http://36.139.193.99:8088/refresh', None, None, None, None, None)或{}
INFO  root:test_bpm.py:41 断言成功,用例数据为:None,期望数据为:{'loginStatus': True}, 服务器返回的数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MzEzMTExMzEsImlhdCI6MTczMTIyNDczMX0.txK-xYU0Ei7SSB6OoaxEEBa_gbB99COH72g_1XeUNSyyGc_6Tt0wfp40xCV_8a0ZHhCKAJcdrFTMNSt5YieEVQ","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
\ No newline at end of file
{"uuid": "bcd8c166-b41f-4f3c-9182-bcf048060a52", "befores": [{"name": "url", "status": "passed", "start": 1731224907439, "stop": 1731224907439}], "start": 1731224907439, "stop": 1731224907478}
\ No newline at end of file
{"uuid": "029376bc-ec26-474b-a252-37b7864a1c0e", "befores": [{"name": "case_data", "status": "passed", "start": 1731224907797, "stop": 1731224907797}], "start": 1731224907797, "stop": 1731224907835}
\ No newline at end of file
{"uuid": "50cc4480-ebfb-4fc4-b0a6-00723e7d49f3", "befores": [{"name": "update_key", "status": "passed", "start": 1731224907007, "stop": 1731224907007}], "start": 1731224907007, "stop": 1731224907043}
\ No newline at end of file
{"uuid": "4ebb9ded-3a9a-4d44-ab84-08f0b19ba4f9", "befores": [{"name": "url", "status": "passed", "start": 1731224907107, "stop": 1731224907107}], "start": 1731224907107, "stop": 1731224907145}
\ No newline at end of file
{"uuid": "3260dbd2-679f-42e2-9124-30e45779d302", "befores": [{"name": "mime", "status": "passed", "start": 1731224907527, "stop": 1731224907527}], "start": 1731224907527, "stop": 1731224907603}
\ No newline at end of file
{"uuid": "d84bd6f6-6c35-4173-af76-a7234eaf77d4", "befores": [{"name": "sql_data", "status": "passed", "start": 1731224907527, "stop": 1731224907527}], "start": 1731224907527, "stop": 1731224907593}
\ No newline at end of file
{"uuid": "c20603f2-a29c-47c8-8e74-50f4cd4003f9", "befores": [{"name": "update_key", "status": "passed", "start": 1731224907440, "stop": 1731224907440}], "start": 1731224907440, "stop": 1731224907472}
\ No newline at end of file
{"uuid": "5135e31e-ba61-44a3-95e4-492fd4492b9f", "befores": [{"name": "sql_type", "status": "passed", "start": 1731224907845, "stop": 1731224907845}], "start": 1731224907845, "stop": 1731224907917}
\ No newline at end of file
{"uuid": "94293513-ab81-4033-a607-52ef1175cff2", "befores": [{"name": "expect_data", "status": "passed", "start": 1731224907845, "stop": 1731224907845}], "start": 1731224907845, "stop": 1731224907918}
\ No newline at end of file
{"uuid": "1c108b80-5079-4c13-9369-815cbb85a078", "befores": [{"name": "mime", "status": "passed", "start": 1731224907796, "stop": 1731224907796}], "start": 1731224907796, "stop": 1731224907836}
\ No newline at end of file
{"uuid": "258a66ee-4f56-48ae-a8e7-a5ac07965528", "befores": [{"name": "update_key", "status": "passed", "start": 1731224907153, "stop": 1731224907153}], "start": 1731224907153, "stop": 1731224907193}
\ No newline at end of file
{"uuid": "93de7415-f781-4553-a420-6e28c18a3245", "befores": [{"name": "level", "status": "passed", "start": 1731224907226, "stop": 1731224907226}], "start": 1731224907226, "stop": 1731224907271}
\ No newline at end of file
{"uuid": "11508890-be9d-47b5-94c3-fd228d3e0481", "befores": [{"name": "api", "status": "passed", "start": 1731224906305, "stop": 1731224906305}], "start": 1731224906305, "stop": 1731224906349}
\ No newline at end of file
{"uuid": "b9a8767f-73e0-41d6-abf9-8d8dc00ddf65", "befores": [{"name": "module", "status": "passed", "start": 1731224907107, "stop": 1731224907107}], "start": 1731224907107, "stop": 1731224907148}
\ No newline at end of file
{"uuid": "1c948201-c084-4299-b761-7b023e237bac", "befores": [{"name": "level", "status": "passed", "start": 1731224906357, "stop": 1731224906357}], "start": 1731224906357, "stop": 1731224906785}
\ No newline at end of file
{"uuid": "691629c2-06a1-4f35-a44e-cf4fe89dd3cc", "befores": [{"name": "title", "status": "passed", "start": 1731224907006, "stop": 1731224907006}], "start": 1731224907006, "stop": 1731224907049}
\ No newline at end of file
{"uuid": "9ccd0f99-4ae9-4906-950c-194125e0cf95", "befores": [{"name": "case_data", "status": "passed", "start": 1731224907527, "stop": 1731224907527}], "start": 1731224907527, "stop": 1731224907602}
\ No newline at end of file
{"uuid": "43d80c16-b20c-4d4d-bf9d-e83651c89fac", "befores": [{"name": "url", "status": "passed", "start": 1731224906952, "stop": 1731224906952}], "start": 1731224906952, "stop": 1731224906999}
\ No newline at end of file
{"uuid": "dfdb9ee1-27d5-41b2-ab2a-d61de03fde08", "befores": [{"name": "api", "status": "passed", "start": 1731224907439, "stop": 1731224907439}], "start": 1731224907439, "stop": 1731224907481}
\ No newline at end of file
{"uuid": "a52ae480-fc82-454d-a8e7-bea12a11d32c", "befores": [{"name": "sql_type", "status": "passed", "start": 1731224907375, "stop": 1731224907375}], "start": 1731224907375, "stop": 1731224907428}
\ No newline at end of file
{"uuid": "f5f7be18-2631-43f0-8a38-ef4db1d91c14", "befores": [{"name": "level", "status": "passed", "start": 1731224906894, "stop": 1731224906894}], "start": 1731224906894, "stop": 1731224906946}
\ No newline at end of file
{"uuid": "1615f60e-e667-4381-aaa8-67e99c4dd9cd", "befores": [{"name": "method", "status": "passed", "start": 1731224907796, "stop": 1731224907796}], "start": 1731224907796, "stop": 1731224907837}
\ No newline at end of file
{"uuid": "22df6b82-3180-42b0-8180-e7634972334d", "befores": [{"name": "level", "status": "passed", "start": 1731224907107, "stop": 1731224907107}], "start": 1731224907107, "stop": 1731224907147}
\ No newline at end of file
{"uuid": "fa7f13f8-609a-4fc8-bdf1-221e37071d99", "befores": [{"name": "sql_type", "status": "passed", "start": 1731224907055, "stop": 1731224907055}], "start": 1731224907055, "stop": 1731224907098}
\ No newline at end of file
{"uuid": "1d43a697-4f2c-4479-b0cc-31cb44207211", "befores": [{"name": "sql_data", "status": "passed", "start": 1731224907153, "stop": 1731224907153}], "start": 1731224907153, "stop": 1731224907197}
\ No newline at end of file
{"uuid": "a5b2fd2a-3b25-4df5-acb4-601f516d1eb8", "befores": [{"name": "mime", "status": "passed", "start": 1731224907153, "stop": 1731224907153}], "start": 1731224907153, "stop": 1731224907209}
\ No newline at end of file
{"uuid": "e4206b49-2e23-4a56-ab50-4938c7779f34", "befores": [{"name": "update_key", "status": "passed", "start": 1731224906306, "stop": 1731224906306}], "start": 1731224906306, "stop": 1731224906341}
\ No newline at end of file
{"uuid": "98559001-a943-4995-936e-c59317aeb02e", "befores": [{"name": "update_key", "status": "passed", "start": 1731224907486, "stop": 1731224907486}], "start": 1731224907486, "stop": 1731224907515}
\ No newline at end of file
{"uuid": "c9c3bfb9-2172-42c5-ba6e-7e690ae6b181", "befores": [{"name": "method", "status": "passed", "start": 1731224906952, "stop": 1731224906952}], "start": 1731224906952, "stop": 1731224906999}
\ No newline at end of file
{"uuid": "4e9c3eb4-3488-42d5-ad60-a1f5b1016972", "befores": [{"name": "url", "status": "passed", "start": 1731224906357, "stop": 1731224906357}], "start": 1731224906357, "stop": 1731224906783}
\ No newline at end of file
{"uuid": "14d52286-518f-442a-8ede-d477b551c075", "befores": [{"name": "expect_data", "status": "passed", "start": 1731224907611, "stop": 1731224907611}], "start": 1731224907611, "stop": 1731224907622}
\ No newline at end of file
{"uuid": "6d7bcd5e-7637-4d53-b050-bef31f38fb7c", "befores": [{"name": "title", "status": "passed", "start": 1731224906305, "stop": 1731224906305}], "start": 1731224906305, "stop": 1731224906349}
\ No newline at end of file
{"uuid": "5011d2be-189e-4ddc-91ef-9aeea5bd4181", "befores": [{"name": "title", "status": "passed", "start": 1731224906829, "stop": 1731224906829}], "start": 1731224906829, "stop": 1731224906888}
\ No newline at end of file
{"uuid": "f538197b-bb8a-409f-9ae3-cdcd531e5825", "befores": [{"name": "module", "status": "passed", "start": 1731224907611, "stop": 1731224907611}], "start": 1731224907611, "stop": 1731224907628}
\ No newline at end of file
{"uuid": "3337ce24-837e-4716-ba2a-5a11a5390c93", "children": ["19f6f33b-9b89-4443-93cf-da97bcf92bac", "91af28f1-0917-49b6-99a7-a7936693b813", "4df3d3f7-71d8-4805-8c94-18290bd84d93", "f13c7574-90e0-42bf-af4f-a7fe6acb1850", "55b765ec-4b87-4a97-aa3e-3bcba0c9c812", "681ad714-02ca-4889-9434-a5db3b48e34d", "72fbae52-01c1-42d0-8ba4-f452173b180b", "cdc03c49-28ad-47e4-bded-41ff3e0e6938", "09a8ce4c-f0b4-41ed-8be5-f3185fea0c05", "1fb213ba-7ea2-4a28-b2af-390dfe51e1a6", "00af9398-bb1b-4cc5-828c-828818cb267f"], "befores": [{"name": "req_fix", "status": "passed", "start": 1731224906214, "stop": 1731224906305}], "afters": [{"name": "req_fix::0", "status": "passed", "start": 1731224907925, "stop": 1731224907925}], "start": 1731224906214, "stop": 1731224907925}
\ No newline at end of file
{"uuid": "3b393836-0bf2-41a7-b887-da3182f979e5", "befores": [{"name": "sql_data", "status": "passed", "start": 1731224907690, "stop": 1731224907690}], "start": 1731224907690, "stop": 1731224907768}
\ No newline at end of file
{"uuid": "09e09085-30a5-4fe1-b247-3f304a3d7317", "befores": [{"name": "case_data", "status": "passed", "start": 1731224907107, "stop": 1731224907107}], "start": 1731224907107, "stop": 1731224907144}
\ No newline at end of file
{"uuid": "a3d6dc37-44e0-4d19-84c5-04fe2a75725c", "befores": [{"name": "mime", "status": "passed", "start": 1731224907226, "stop": 1731224907226}], "start": 1731224907226, "stop": 1731224907268}
\ No newline at end of file
{"uuid": "6c1997a2-464d-4140-ae63-4d00b069d2dc", "befores": [{"name": "method", "status": "passed", "start": 1731224907153, "stop": 1731224907153}], "start": 1731224907153, "stop": 1731224907214}
\ No newline at end of file
{"uuid": "dcba5461-e077-4665-be02-55c3d7de9922", "befores": [{"name": "url", "status": "passed", "start": 1731224907634, "stop": 1731224907634}], "start": 1731224907634, "stop": 1731224907682}
\ No newline at end of file
{"uuid": "29fa0d89-4d46-4c54-8e49-8ab4e3995ec2", "befores": [{"name": "sql_data", "status": "passed", "start": 1731224907440, "stop": 1731224907440}], "start": 1731224907440, "stop": 1731224907473}
\ No newline at end of file
{"uuid": "9d374192-e99f-4f41-8f76-82348c3efe6f", "befores": [{"name": "update_key", "status": "passed", "start": 1731224906952, "stop": 1731224906952}], "start": 1731224906952, "stop": 1731224906995}
\ No newline at end of file
{"uuid": "16dff635-d6e6-44fb-bca1-67cc29ca72d5", "befores": [{"name": "api", "status": "passed", "start": 1731224907055, "stop": 1731224907055}], "start": 1731224907055, "stop": 1731224907102}
\ No newline at end of file
{"uuid": "e817a318-d4a7-4d44-930c-c608c9483ff3", "befores": [{"name": "case_data", "status": "passed", "start": 1731224907226, "stop": 1731224907226}], "start": 1731224907226, "stop": 1731224907267}
\ No newline at end of file
{"uuid": "22072a93-1ac9-4ee4-943d-b374a161350b", "befores": [{"name": "sql_data", "status": "passed", "start": 1731224907227, "stop": 1731224907227}], "start": 1731224907227, "stop": 1731224907266}
\ No newline at end of file
{"uuid": "e1f3e81a-90f4-4ec2-a37f-79d0be052b94", "befores": [{"name": "mime", "status": "passed", "start": 1731224907006, "stop": 1731224907006}], "start": 1731224907006, "stop": 1731224907046}
\ No newline at end of file
{"uuid": "81025c7c-bbad-44fa-a49a-66d4a17ee20c", "befores": [{"name": "update_key", "status": "passed", "start": 1731224906894, "stop": 1731224906894}], "start": 1731224906894, "stop": 1731224906938}
\ No newline at end of file
{"uuid": "38ff8c67-1884-4367-bd5a-0c23ae1e1d9f", "befores": [{"name": "mime", "status": "passed", "start": 1731224907634, "stop": 1731224907634}], "start": 1731224907634, "stop": 1731224907682}
\ No newline at end of file
{"uuid": "8e8f6b17-5a6f-4c89-8f92-a9a32ef69d1b", "befores": [{"name": "method", "status": "passed", "start": 1731224907844, "stop": 1731224907845}], "start": 1731224907844, "stop": 1731224907920}
\ No newline at end of file
{"uuid": "648d3c0a-a895-4abe-944f-1113597b3f09", "befores": [{"name": "case_id", "status": "passed", "start": 1731224907152, "stop": 1731224907152}], "start": 1731224907152, "stop": 1731224907221}
\ No newline at end of file
{"uuid": "576c8e2a-7022-47ed-ad24-d1529f8c6047", "befores": [{"name": "sql_type", "status": "passed", "start": 1731224907006, "stop": 1731224907006}], "start": 1731224907006, "stop": 1731224907044}
\ No newline at end of file
{"uuid": "f718872d-61d3-4d86-96f2-8b763de9333f", "befores": [{"name": "method", "status": "passed", "start": 1731224907486, "stop": 1731224907486}], "start": 1731224907486, "stop": 1731224907519}
\ No newline at end of file
{"uuid": "4bcdcb1f-82d7-431a-aff6-5faae4c0204f", "befores": [{"name": "expect_data", "status": "passed", "start": 1731224907107, "stop": 1731224907108}], "start": 1731224907107, "stop": 1731224907144}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'post', 'http://36.139.193.99:8088/auth', 'application/json', {'username': 'adminadminadminadminadminadmin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}, None, None, None)或{}
INFO  root:test_bpm.py:41 断言成功,用例数据为:{'username': 'adminadminadminadminadminadmin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"state":false,"message":"账户错误或该租户未启用","code":200,"logId":"1855517126522675200"}
\ No newline at end of file
{"uuid": "9cbd5fd8-1103-4af6-b26b-43a37cdf1ed7", "befores": [{"name": "method", "status": "passed", "start": 1731224907527, "stop": 1731224907527}], "start": 1731224907527, "stop": 1731224907604}
\ No newline at end of file
{"uuid": "5bddc074-5db8-42c8-85e5-228950a2d3da", "befores": [{"name": "case_id", "status": "passed", "start": 1731224906829, "stop": 1731224906829}], "start": 1731224906829, "stop": 1731224906891}
\ No newline at end of file
{"uuid": "cb19c1fa-9402-46ee-ac6d-014299dd8dd7", "befores": [{"name": "case_data", "status": "passed", "start": 1731224907006, "stop": 1731224907006}], "start": 1731224907006, "stop": 1731224907045}
\ No newline at end of file
{"uuid": "d1217e99-9cc4-4480-bc6d-96becad928e1", "befores": [{"name": "module", "status": "passed", "start": 1731224907844, "stop": 1731224907844}], "start": 1731224907844, "stop": 1731224907923}
\ No newline at end of file
{"uuid": "895d05d0-9596-46b6-8b2d-b2a0d966dbe1", "befores": [{"name": "url", "status": "passed", "start": 1731224906829, "stop": 1731224906829}], "start": 1731224906829, "stop": 1731224906886}
\ No newline at end of file
{"uuid": "a6e9ddcd-8fdf-416c-9e36-3cb141619bc3", "befores": [{"name": "module", "status": "passed", "start": 1731224907055, "stop": 1731224907055}], "start": 1731224907055, "stop": 1731224907103}
\ No newline at end of file
{"uuid": "5c77221a-6382-41bd-bb0d-f2b320a129b7", "befores": [{"name": "title", "status": "passed", "start": 1731224907527, "stop": 1731224907527}], "start": 1731224907527, "stop": 1731224907606}
\ No newline at end of file
{"uuid": "e2cfb1ad-9018-476a-9246-b46765dde578", "befores": [{"name": "sql_type", "status": "passed", "start": 1731224907153, "stop": 1731224907153}], "start": 1731224907153, "stop": 1731224907201}
\ No newline at end of file
{"uuid": "2628f790-a446-4ccc-8ac9-bd767ab93781", "befores": [{"name": "api", "status": "passed", "start": 1731224906894, "stop": 1731224906894}], "start": 1731224906894, "stop": 1731224906948}
\ No newline at end of file
{"uuid": "5d96112e-a32b-4a0a-a536-3987497b7e3d", "befores": [{"name": "title", "status": "passed", "start": 1731224906952, "stop": 1731224906952}], "start": 1731224906952, "stop": 1731224907000}
\ No newline at end of file
{"uuid": "6339715c-82f0-4098-bc6e-286658ce5bb0", "befores": [{"name": "api", "status": "passed", "start": 1731224907226, "stop": 1731224907226}], "start": 1731224907226, "stop": 1731224907272}
\ No newline at end of file
{"uuid": "f1bebe60-eff5-4215-ac34-0b47e16b7267", "befores": [{"name": "module", "status": "passed", "start": 1731224906357, "stop": 1731224906357}], "start": 1731224906357, "stop": 1731224906786}
\ No newline at end of file
{"uuid": "24276753-9e9c-4657-a194-02e80998ff04", "befores": [{"name": "title", "status": "passed", "start": 1731224907633, "stop": 1731224907633}], "start": 1731224907633, "stop": 1731224907684}
\ No newline at end of file
{"uuid": "f82414b1-eac4-428b-b9f4-5e4a438d0d90", "befores": [{"name": "update_key", "status": "passed", "start": 1731224907055, "stop": 1731224907055}], "start": 1731224907055, "stop": 1731224907096}
\ No newline at end of file
{"uuid": "efdd4643-c0cc-4ab1-a601-cdbc7299c969", "befores": [{"name": "case_id", "status": "passed", "start": 1731224907373, "stop": 1731224907373}], "start": 1731224907373, "stop": 1731224907436}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, 'DELETE', 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', 'query', {'ids': '需要更新'}, 'select', 'SELECT ID_ FROM uc_demension WHERE CODE_="testAddDem";', 'ids')或{}
INFO  root:__init__.py:46 执行的功能为:select, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\db.py, 所在的行为:45行,形参的值为:(<MyApiAutoTest_v3_3.common.db.DB object at 0x000001845E4F68D0>, 'SELECT ID_ FROM uc_demension WHERE CODE_="testAddDem";')或{}
ERROR  root:test_bpm.py:39 断言失败,用例数据为:{'ids': '1855517127655137280'},期望数据为:{'state': True, 'message': '删除维度成功!'}, 服务器返回的数据为:{"state":false,"message":"【测试添加的维度(testAddDem)】的维度下存在组织,不允许删除 ","value":"","code":200}
\ No newline at end of file
{"uuid": "1a334c6b-8142-4b79-9477-fd95064de188", "befores": [{"name": "level", "status": "passed", "start": 1731224906829, "stop": 1731224906829}], "start": 1731224906829, "stop": 1731224906887}
\ No newline at end of file
{"name": "正向用例", "status": "broken", "statusDetails": {"message": "ValueError: 方法:request_all,传入的媒体类型为:x-www-form-urlencoded, 没有符合的判断分支,可以自行封装,也可以继承之后覆盖", "trace": "self = <MyApiAutoTest_v3_3.test_case.test_zs.test_bpm.TestBPM object at 0x000001845E46DCD0>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, case_id = 'T16', module = '组织管理', api = '删除组织', title = '正向用例'\nlevel = '中', method = 'post', url = 'http://36.139.193.99:8088/api/org/v1/org/deleteOrg', mime = 'x-www-form-urlencoded', case_data = 'testAddOrg'\nexpect_data = {'message': '删除组织成功!', 'state': True}, 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(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n> res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n\ntest_case\\test_zs\\test_bpm.py:33: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n__init__.py:53: in inner\n raise e\n__init__.py:48: in inner\n result = func_name(*args, **kwargs)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, method = 'post'\nurl = 'http://36.139.193.99:8088/api/org/v1/org/deleteOrg', mime = 'x-www-form-urlencoded', case_data = 'testAddOrg', sql_type = None, sql_data = None, update_key = None\n\n @log\n def request_all(self, method, url, mime=None, case_data=None, sql_type=None, sql_data=None, update_key=None):\n if sql_type == \"delete\":\n self.db.delete(sql_data)\n elif sql_type == \"select\":\n select_result = self.db.select(sql_data)\n case_data[update_key] = select_result\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 执行删除语句\n self.db.delete(sql_data[\"delete\"])\n # 执行查询语句\n select_result = self.db.select(sql_data[\"select\"])\n case_data[update_key] = select_result\n \n # 根据请求的媒体类型发送请求\n # 发送的数据为json数据\n if mime == \"json\" or mime == \"application/json\":\n return self.session.request(method, url, json=case_data)\n # 发送的数据为文件\n elif mime == \"multipart/form-data\" or mime == \"form-data\":\n return self.session.request(method, url, files=case_data)\n # 通过URL传参\n elif mime == \"query\":\n return self.session.request(method, url, params=case_data)\n # 不传参\n elif mime is None:\n return self.session.request(method, url)\n # 需要同时传参\n elif mime == \"query|json\" or mime == \"json|query\":\n return self.session.request(method, url, json=case_data, params=case_data)\n # 都不是,抛出错误\n else:\n> raise ValueError(f\"方法:request_all,传入的媒体类型为:{mime}, 没有符合的判断分支,可以自行封装,也可以继承之后覆盖\")\nE ValueError: 方法:request_all,传入的媒体类型为:x-www-form-urlencoded, 没有符合的判断分支,可以自行封装,也可以继承之后覆盖\n\nrequests_method\\requests_method.py:63: ValueError"}, "attachments": [{"name": "log", "source": "e2ecabdf-d6f8-4acd-9afe-1fec9045e20d-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_id", "value": "'T16'"}, {"name": "module", "value": "'组织管理'"}, {"name": "api", "value": "'删除组织'"}, {"name": "title", "value": "'正向用例'"}, {"name": "level", "value": "'中'"}, {"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'"}, {"name": "mime", "value": "'x-www-form-urlencoded'"}, {"name": "case_data", "value": "'testAddOrg'"}, {"name": "expect_data", "value": "{'state': True, 'message': '删除组织成功!'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1731224907612, "stop": 1731224907612, "uuid": "6804c6a6-86e5-4d6b-93c6-dcbf08750f2b", "historyId": "69af0bd69ed14cf779d192406f1531bc", "testCaseId": "d417f835dc1c783689c0cac5e3ed50b5", "fullName": "test_case.test_zs.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "删除组织"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM_张三"}, {"name": "parentSuite", "value": "test_case.test_zs"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "MrLee"}, {"name": "thread", "value": "12240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_zs.test_bpm"}]}
\ No newline at end of file
{"uuid": "77c9e2d8-fef5-4ce9-bd6c-cce3ac0da9d9", "befores": [{"name": "case_data", "status": "passed", "start": 1731224907375, "stop": 1731224907375}], "start": 1731224907375, "stop": 1731224907430}
\ No newline at end of file
{"uuid": "36de2e2a-fd1b-4ab6-9d14-35447963e401", "befores": [{"name": "url", "status": "passed", "start": 1731224907055, "stop": 1731224907055}], "start": 1731224907055, "stop": 1731224907100}
\ No newline at end of file
{"uuid": "709a7bc0-bb57-4237-8081-02cdc2e16ccf", "befores": [{"name": "url", "status": "passed", "start": 1731224906894, "stop": 1731224906894}], "start": 1731224906894, "stop": 1731224906944}
\ No newline at end of file
{"uuid": "0261a53a-aaab-4ecd-8751-495e110cc058", "befores": [{"name": "module", "status": "passed", "start": 1731224906790, "stop": 1731224906790}], "start": 1731224906790, "stop": 1731224906824}
\ No newline at end of file
{"uuid": "392a194c-101e-460e-9f07-90891acdaebf", "befores": [{"name": "mime", "status": "passed", "start": 1731224906952, "stop": 1731224906952}], "start": 1731224906952, "stop": 1731224906998}
\ No newline at end of file
{"uuid": "34d17b6a-cef1-4e73-bbc0-7b51194418dc", "befores": [{"name": "case_id", "status": "passed", "start": 1731224907226, "stop": 1731224907226}], "start": 1731224907226, "stop": 1731224907274}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:get_sql_connect, 功能描述为:根据key获取数据库连接信息, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:29行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E4F62D0>, 'host')或{}
INFO  root:__init__.py:46 执行的功能为:get_sql_connect, 功能描述为:根据key获取数据库连接信息, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:29行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E4F62D0>, 'port')或{}
INFO  root:__init__.py:46 执行的功能为:get_sql_connect, 功能描述为:根据key获取数据库连接信息, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:29行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E4F62D0>, 'username')或{}
INFO  root:__init__.py:46 执行的功能为:get_sql_connect, 功能描述为:根据key获取数据库连接信息, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:29行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E4F62D0>, 'password')或{}
INFO  root:__init__.py:46 执行的功能为:get_sql_connect, 功能描述为:根据key获取数据库连接信息, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:29行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E4F62D0>, 'database')或{}
INFO  root:__init__.py:46 执行的功能为:get_host, 功能描述为:根据key获取域名, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\read_basic_ini.py, 所在的行为:24行,形参的值为:(<MyApiAutoTest_v3_3.common.read_basic_ini.ReadBasicIni object at 0x000001845E46F650>, 'bpm')或{}
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, 'post', 'http://36.139.193.99:8088/api/demension/v1/dem/addDem', 'json', {'code': 'testAddDem', 'description': 'testAddDem', 'isDefault': 0, 'name': 'testAddDem'}, 'delete', 'DELETE FROM uc_demension WHERE CODE_="testAddDem";', None)或{}
INFO  root:__init__.py:46 执行的功能为:delete, 功能描述为:执行删除的sql语句, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\common\db.py, 所在的行为:33行,形参的值为:(<MyApiAutoTest_v3_3.common.db.DB object at 0x000001845E4F68D0>, 'DELETE FROM uc_demension WHERE CODE_="testAddDem";')或{}
INFO  root:test_bpm.py:42 断言成功,用例数据为:{'code': 'testAddDem', 'description': 'testAddDem', 'isDefault': 0, 'name': 'testAddDem'},期望数据为:{'state': True, 'message': '添加维度成功!'}, 服务器返回的数据为:{"state":true,"message":"添加维度成功!","value":"","code":200}
\ No newline at end of file
{"uuid": "fc41b8c8-6174-473a-a5e5-45bd3bae0314", "befores": [{"name": "method", "status": "passed", "start": 1731224906829, "stop": 1731224906829}], "start": 1731224906829, "stop": 1731224906886}
\ No newline at end of file
{"uuid": "ed8681c0-84f9-43fa-b2b4-82baf32bf1d9", "befores": [{"name": "url", "status": "passed", "start": 1731224906790, "stop": 1731224906790}], "start": 1731224906790, "stop": 1731224906821}
\ No newline at end of file
{"uuid": "c16363e6-1b0a-47e9-9488-a37560605149", "befores": [{"name": "mime", "status": "passed", "start": 1731224906357, "stop": 1731224906357}], "start": 1731224906357, "stop": 1731224906783}
\ No newline at end of file
{"uuid": "44ecf678-5a01-43a4-9ff0-2fea5018fd42", "befores": [{"name": "level", "status": "passed", "start": 1731224906790, "stop": 1731224906790}], "start": 1731224906790, "stop": 1731224906822}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'post', 'http://36.139.193.99:8088/auth', 'application/json', {'username': '㊚㊛囍㊒㊖☑✔☐☒✘卍', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}, None, None, None)或{}
INFO  root:test_bpm.py:41 断言成功,用例数据为:{'username': '㊚㊛囍㊒㊖☑✔☐☒✘卍', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"state":false,"message":"账户错误或该租户未启用","code":200,"logId":"1855517126711418880"}
\ No newline at end of file
{"uuid": "8273cbd0-5b2f-4edb-884a-2d9dd1bf73f7", "befores": [{"name": "method", "status": "passed", "start": 1731224907690, "stop": 1731224907690}], "start": 1731224907690, "stop": 1731224907786}
\ No newline at end of file
{"uuid": "54d3e3b5-8f06-4d1d-a0dd-eeb41858d4cf", "befores": [{"name": "level", "status": "passed", "start": 1731224906305, "stop": 1731224906305}], "start": 1731224906305, "stop": 1731224906347}
\ No newline at end of file
{"uuid": "8cd9ee44-fac8-4b89-8653-26ae9763a358", "befores": [{"name": "url", "status": "passed", "start": 1731224907226, "stop": 1731224907226}], "start": 1731224907226, "stop": 1731224907269}
\ No newline at end of file
{"uuid": "dbd2dd77-1218-4fad-879c-d763ede6b838", "befores": [{"name": "expect_data", "status": "passed", "start": 1731224907055, "stop": 1731224907055}], "start": 1731224907055, "stop": 1731224907099}
\ No newline at end of file
{"uuid": "52301441-ad97-43a2-8196-4cbfc4ee4462", "children": ["ba0960d7-b425-45a2-a391-c9fab6d57f0f", "a7dd2070-c231-4a18-8d0f-e0c1abe997b9", "8b6752d4-06e7-4a25-98e3-2ff1088ab0a5", "a66ee57d-2c37-4efb-88a6-4a371c9b913a", "6804c6a6-86e5-4d6b-93c6-dcbf08750f2b", "8ead9ee3-1dc8-4bb4-af95-43b519c6a5bc", "a60992c9-9e8b-4442-a4e3-077adb8c8b56", "2541793e-841c-4bb9-9a48-0125539478d6", "625eed2c-7c72-4e9e-a3d2-369dd90d643a"], "befores": [{"name": "req_fix", "status": "passed", "start": 1731224907279, "stop": 1731224907372}], "afters": [{"name": "req_fix::0", "status": "passed", "start": 1731224907924, "stop": 1731224907924}], "start": 1731224907279, "stop": 1731224907924}
\ No newline at end of file
{"uuid": "4940be2b-a5dc-4a51-aa5a-e17281b37ab8", "befores": [{"name": "module", "status": "passed", "start": 1731224906894, "stop": 1731224906894}], "start": 1731224906894, "stop": 1731224906948}
\ No newline at end of file
{"uuid": "eb3efad9-72f8-44f1-87ed-4f6f44a4b7e1", "befores": [{"name": "mime", "status": "passed", "start": 1731224907690, "stop": 1731224907690}], "start": 1731224907690, "stop": 1731224907780}
\ No newline at end of file
{"uuid": "180c49ae-1d16-418d-843e-d3b7bca4bab1", "befores": [{"name": "url", "status": "passed", "start": 1731224907006, "stop": 1731224907006}], "start": 1731224907006, "stop": 1731224907047}
\ No newline at end of file
{"uuid": "3a650d03-9513-491e-9df9-f11f0e6edab9", "befores": [{"name": "title", "status": "passed", "start": 1731224907486, "stop": 1731224907486}], "start": 1731224907486, "stop": 1731224907521}
\ No newline at end of file
{"uuid": "e6d33317-d63b-4105-851f-605a52fc3487", "befores": [{"name": "level", "status": "passed", "start": 1731224907844, "stop": 1731224907844}], "start": 1731224907844, "stop": 1731224907921}
\ No newline at end of file
{"uuid": "dccb80d5-2231-4f03-83fe-00a858000978", "befores": [{"name": "sql_type", "status": "passed", "start": 1731224907486, "stop": 1731224907486}], "start": 1731224907486, "stop": 1731224907517}
\ No newline at end of file
{"uuid": "bcbeea3b-7241-4b94-917d-30d117f53e51", "befores": [{"name": "update_key", "status": "passed", "start": 1731224906830, "stop": 1731224906830}], "start": 1731224906830, "stop": 1731224906880}
\ No newline at end of file
{"uuid": "ef70a15c-1273-4afb-bfdc-e317f7922779", "befores": [{"name": "sql_type", "status": "passed", "start": 1731224907634, "stop": 1731224907634}], "start": 1731224907634, "stop": 1731224907681}
\ No newline at end of file
{"uuid": "7fba1397-a9b3-443b-b532-8d2b4b9d0be5", "befores": [{"name": "module", "status": "passed", "start": 1731224906952, "stop": 1731224906952}], "start": 1731224906952, "stop": 1731224907002}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, 'DELETE', 'http://36.139.193.99:8088/api/demension/v2/dem/deleteDemByIds', 'query', {'ids': ''}, None, None, None)或{}
ERROR  root:test_bpm.py:39 断言失败,用例数据为:{'ids': ''},期望数据为:{'state': False, 'message': '维度id不能为空!'}, 服务器返回的数据为:{"state":false,"message":"删除维度失败,维度ids必填","code":200,"logId":"1855517129550962688"}
\ No newline at end of file
{"uuid": "b5ef564e-9b84-4074-81f2-dfbf9fc70596", "befores": [{"name": "mime", "status": "passed", "start": 1731224906894, "stop": 1731224906894}], "start": 1731224906894, "stop": 1731224906944}
\ No newline at end of file
{"uuid": "f36205eb-7747-4dbe-b8eb-06a032ebf8b3", "befores": [{"name": "case_id", "status": "passed", "start": 1731224907486, "stop": 1731224907486}], "start": 1731224907486, "stop": 1731224907524}
\ No newline at end of file
{"uuid": "979f6de3-4e05-4c95-a93b-4cf8f359a981", "befores": [{"name": "title", "status": "passed", "start": 1731224907373, "stop": 1731224907374}], "start": 1731224907373, "stop": 1731224907434}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "9580f2cf-6e43-4d44-b79f-d40cf83abc95-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_id", "value": "'T11'"}, {"name": "module", "value": "'维度管理'"}, {"name": "api", "value": "'添加维度'"}, {"name": "title", "value": "'正向用例'"}, {"name": "level", "value": "'高'"}, {"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'"}, {"name": "mime", "value": "'json'"}, {"name": "case_data", "value": "{'code': 'testAddDem', 'description': 'testAddDem', 'isDefault': 0, 'name': 'testAddDem'}"}, {"name": "expect_data", "value": "{'state': True, 'message': '添加维度成功!'}"}, {"name": "sql_type", "value": "'delete'"}, {"name": "sql_data", "value": "'DELETE FROM uc_demension WHERE CODE_=\"testAddDem\";'"}, {"name": "update_key", "value": "None"}], "start": 1731224907377, "stop": 1731224907425, "uuid": "ba0960d7-b425-45a2-a391-c9fab6d57f0f", "historyId": "b06c951d4f2fdd7dc1a5686b0f444aad", "testCaseId": "d417f835dc1c783689c0cac5e3ed50b5", "fullName": "test_case.test_zs.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "添加维度"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM_张三"}, {"name": "parentSuite", "value": "test_case.test_zs"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "MrLee"}, {"name": "thread", "value": "12240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_zs.test_bpm"}]}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'post', 'http://36.139.193.99:8088/auth', 'application/json', {'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'}, None, None, None)或{}
ERROR  root:test_bpm.py:38 断言失败,用例数据为:{'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"state":false,"message":"账号或密码错误","code":200,"logId":"1855517125629288448"}
\ No newline at end of file
{"uuid": "6d102f3c-3606-481c-9abe-53a6d503df5c", "befores": [{"name": "mime", "status": "passed", "start": 1731224907845, "stop": 1731224907845}], "start": 1731224907845, "stop": 1731224907919}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'post', 'http://36.139.193.99:8088/auth', 'application/json', {'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'}, None, None, None)或{}
ERROR  root:test_bpm.py:38 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MzEzMTExMzAsImlhdCI6MTczMTIyNDczMH0.nujtbsNRmxSXDP6PJ6dm6GmIZU7vY4kvjzeJ1sjh8mMRliOmtcsr39RJ2VL4vibY7iyZNci0GN0pEdy9ICBmFw","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
\ No newline at end of file
{"uuid": "b424ddf8-0088-4370-811a-68c9fecec7fd", "befores": [{"name": "method", "status": "passed", "start": 1731224907439, "stop": 1731224907439}], "start": 1731224907439, "stop": 1731224907479}
\ No newline at end of file
{"uuid": "66553d57-964f-4cd5-96ab-fce765554bd1", "befores": [{"name": "sql_data", "status": "passed", "start": 1731224907055, "stop": 1731224907055}], "start": 1731224907055, "stop": 1731224907097}
\ No newline at end of file
{"uuid": "8f1a1497-0a43-4200-94d8-9db32d169720", "befores": [{"name": "mime", "status": "passed", "start": 1731224906829, "stop": 1731224906829}], "start": 1731224906829, "stop": 1731224906885}
\ No newline at end of file
{"uuid": "3590528f-075c-4dfc-855c-c7e202073211", "befores": [{"name": "method", "status": "passed", "start": 1731224907107, "stop": 1731224907107}], "start": 1731224907107, "stop": 1731224907147}
\ No newline at end of file
{"uuid": "99602392-14fe-4ec4-ba85-0230911989bc", "befores": [{"name": "sql_data", "status": "passed", "start": 1731224907108, "stop": 1731224907108}], "start": 1731224907108, "stop": 1731224907143}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'post', 'http://36.139.193.99:8088/auth', 'application/json', {'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='}, None, None, None)或{}
ERROR  root:test_bpm.py:38 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"state":false,"message":"解密密码异常,请检查RSA公钥和私钥配置","code":200,"logId":"1855517125125971968"}
\ No newline at end of file
{"uuid": "907813ae-1ec0-4078-a52d-04feda495e6f", "befores": [{"name": "sql_data", "status": "passed", "start": 1731224907634, "stop": 1731224907634}], "start": 1731224907634, "stop": 1731224907680}
\ No newline at end of file
{"uuid": "ac5e47c9-3196-474c-b397-b770034eed68", "befores": [{"name": "sql_type", "status": "passed", "start": 1731224907527, "stop": 1731224907527}], "start": 1731224907527, "stop": 1731224907596}
\ No newline at end of file
{"uuid": "dfce8317-5f1c-447e-88d8-afb28c17c062", "befores": [{"name": "api", "status": "passed", "start": 1731224907006, "stop": 1731224907006}], "start": 1731224907006, "stop": 1731224907050}
\ No newline at end of file
{"name": "反向用例-用户名正确-密码为特殊字符", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125629288448\"}", "trace": "self = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E428E90>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T005', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码为特殊字符', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json'\ncase_data = {'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert '账号或密码错误' == '账户错误或该租户未启用'\nE \nE - 账户错误或该租户未启用\nE + 账号或密码错误\n\ntest_case\\test_demo\\test_bpm.py:36: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E428E90>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T005', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码为特殊字符', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json'\ncase_data = {'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125629288448\"}\n\ntest_case\\test_demo\\test_bpm.py:39: AssertionError"}, "attachments": [{"name": "log", "source": "a88f993a-3d7e-4c6e-8fb1-4015c5e320e3-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_id", "value": "'T005'"}, {"name": "module", "value": "'认证接口'"}, {"name": "api", "value": "'登录系统'"}, {"name": "title", "value": "'反向用例-用户名正确-密码为特殊字符'"}, {"name": "level", "value": "'中'"}, {"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "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": 1731224906895, "stop": 1731224906932, "uuid": "55b765ec-4b87-4a97-aa3e-3bcba0c9c812", "historyId": "5b54fc1b7f63783d9155a88280542170", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM_demo"}, {"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "MrLee"}, {"name": "thread", "value": "12240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
\ No newline at end of file
{"name": "反向用例-密码正确-用户名过长", "status": "passed", "attachments": [{"name": "log", "source": "7df285bf-8315-4a3f-88e5-0bdd00532725-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_id", "value": "'T009'"}, {"name": "module", "value": "'认证接口'"}, {"name": "api", "value": "'登录系统'"}, {"name": "title", "value": "'反向用例-密码正确-用户名过长'"}, {"name": "level", "value": "'中'"}, {"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'adminadminadminadminadminadmin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1731224907108, "stop": 1731224907141, "uuid": "09a8ce4c-f0b4-41ed-8be5-f3185fea0c05", "historyId": "d6ffe46b175439dde0de98e73817b16c", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM_demo"}, {"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "MrLee"}, {"name": "thread", "value": "12240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, 'put', 'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem', 'query', {'code': 'testAddDem'}, None, None, None)或{}
INFO  root:test_bpm.py:42 断言成功,用例数据为:{'code': 'testAddDem'},期望数据为:{'state': True, 'message': '设置默认维度成功!'}, 服务器返回的数据为:{"state":true,"message":"设置默认维度成功!","value":"","code":200}
\ No newline at end of file
{"uuid": "362ee07c-2cd5-4906-9cf8-5d11c0010d5a", "befores": [{"name": "sql_data", "status": "passed", "start": 1731224906894, "stop": 1731224906894}], "start": 1731224906894, "stop": 1731224906940}
\ No newline at end of file
{"uuid": "45a51784-2cee-4c7c-8777-f283b7b821ec", "befores": [{"name": "api", "status": "passed", "start": 1731224906357, "stop": 1731224906357}], "start": 1731224906357, "stop": 1731224906786}
\ No newline at end of file
{"uuid": "47b57c04-03b6-4550-8e18-5600504ce7e7", "befores": [{"name": "title", "status": "passed", "start": 1731224906894, "stop": 1731224906894}], "start": 1731224906894, "stop": 1731224906947}
\ No newline at end of file
{"uuid": "e4663d07-7799-4212-8f6b-e281e492aa5b", "befores": [{"name": "sql_data", "status": "passed", "start": 1731224907375, "stop": 1731224907375}], "start": 1731224907375, "stop": 1731224907427}
\ No newline at end of file
{"uuid": "b51029dd-57bd-4023-8095-5862c6f62037", "befores": [{"name": "level", "status": "passed", "start": 1731224907633, "stop": 1731224907634}], "start": 1731224907633, "stop": 1731224907684}
\ No newline at end of file
{"uuid": "59be8934-fe6c-4395-81f7-a3264cf9c5cd", "befores": [{"name": "method", "status": "passed", "start": 1731224907226, "stop": 1731224907226}], "start": 1731224907226, "stop": 1731224907270}
\ No newline at end of file
{"uuid": "9506c2e8-8b41-4f52-ac71-016183028473", "befores": [{"name": "sql_type", "status": "passed", "start": 1731224907797, "stop": 1731224907797}], "start": 1731224907797, "stop": 1731224907835}
\ No newline at end of file
{"uuid": "cef13d75-8d41-4246-a626-e4aad3e33e5c", "befores": [{"name": "expect_data", "status": "passed", "start": 1731224906894, "stop": 1731224906894}], "start": 1731224906894, "stop": 1731224906942}
\ No newline at end of file
{"name": "反向用例-密码正确-用户名为空", "status": "passed", "attachments": [{"name": "log", "source": "f622d994-3df6-4ed3-ade6-0e3004d4c230-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_id", "value": "'T007'"}, {"name": "module", "value": "'认证接口'"}, {"name": "api", "value": "'登录系统'"}, {"name": "title", "value": "'反向用例-密码正确-用户名为空'"}, {"name": "level", "value": "'中'"}, {"name": "method", "value": "'Post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': '', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1731224907007, "stop": 1731224907042, "uuid": "72fbae52-01c1-42d0-8ba4-f452173b180b", "historyId": "3bb71f61df1e33b1390cb3a5adf67125", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM_demo"}, {"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "MrLee"}, {"name": "thread", "value": "12240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
\ No newline at end of file
{"uuid": "f3b9da48-02fe-4ffc-9e67-a26266412b12", "befores": [{"name": "url", "status": "passed", "start": 1731224907796, "stop": 1731224907796}], "start": 1731224907796, "stop": 1731224907837}
\ No newline at end of file
{"uuid": "a494b245-ab7e-4238-84a8-8cb9efc9abda", "befores": [{"name": "method", "status": "passed", "start": 1731224906357, "stop": 1731224906357}], "start": 1731224906357, "stop": 1731224906784}
\ No newline at end of file
{"name": "反向用例-密码正确-用户名为特殊字符", "status": "passed", "attachments": [{"name": "log", "source": "99f0e09d-9354-4e30-8da1-22a070146de9-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_id", "value": "'T010'"}, {"name": "module", "value": "'认证接口'"}, {"name": "api", "value": "'登录系统'"}, {"name": "title", "value": "'反向用例-密码正确-用户名为特殊字符'"}, {"name": "level", "value": "'中'"}, {"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': '㊚㊛囍㊒㊖☑✔☐☒✘卍', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1731224907153, "stop": 1731224907192, "uuid": "1fb213ba-7ea2-4a28-b2af-390dfe51e1a6", "historyId": "ca917b83e98db4327bdb638860f07b10", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM_demo"}, {"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "MrLee"}, {"name": "thread", "value": "12240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
\ No newline at end of file
{"uuid": "0b12cb0c-10a5-43be-87d7-65476f57ee0d", "befores": [{"name": "sql_type", "status": "passed", "start": 1731224906894, "stop": 1731224906894}], "start": 1731224906894, "stop": 1731224906941}
\ No newline at end of file
{"uuid": "2e044949-b9d5-49a2-8a01-041de568f040", "befores": [{"name": "title", "status": "passed", "start": 1731224907439, "stop": 1731224907439}], "start": 1731224907439, "stop": 1731224907480}
\ No newline at end of file
{"uuid": "c0e09be0-43fc-4b81-b6dc-0595a1a5c2a9", "befores": [{"name": "sql_data", "status": "passed", "start": 1731224906357, "stop": 1731224906357}], "start": 1731224906357, "stop": 1731224906780}
\ No newline at end of file
{"uuid": "6289e619-98f8-4821-a7cb-972a10686e14", "befores": [{"name": "module", "status": "passed", "start": 1731224907373, "stop": 1731224907373}], "start": 1731224907373, "stop": 1731224907435}
\ No newline at end of file
{"uuid": "37a8daa1-df7c-4261-92bf-3781ec1c5264", "befores": [{"name": "case_id", "status": "passed", "start": 1731224906357, "stop": 1731224906357}], "start": 1731224906357, "stop": 1731224906787}
\ No newline at end of file
{"uuid": "c435175f-d845-4ae6-8d83-5d69854ea3c8", "befores": [{"name": "level", "status": "passed", "start": 1731224907611, "stop": 1731224907611}], "start": 1731224907611, "stop": 1731224907626}
\ No newline at end of file
{"uuid": "f56376f1-1420-4cc3-9cad-6f21f1533508", "befores": [{"name": "level", "status": "passed", "start": 1731224907374, "stop": 1731224907374}], "start": 1731224907374, "stop": 1731224907433}
\ No newline at end of file
{"name": "反向用例-密码正确-用户名过短", "status": "passed", "attachments": [{"name": "log", "source": "e876e118-15e8-4b87-895e-d613a08197bf-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_id", "value": "'T008'"}, {"name": "module", "value": "'认证接口'"}, {"name": "api", "value": "'登录系统'"}, {"name": "title", "value": "'反向用例-密码正确-用户名过短'"}, {"name": "level", "value": "'中'"}, {"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'a', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1731224907055, "stop": 1731224907096, "uuid": "cdc03c49-28ad-47e4-bded-41ff3e0e6938", "historyId": "494e61fa27e17cb5f6dd716d3d739d58", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM_demo"}, {"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "MrLee"}, {"name": "thread", "value": "12240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
\ No newline at end of file
{"uuid": "73b933aa-ba98-4cfa-9839-7fe5833f3482", "befores": [{"name": "sql_data", "status": "passed", "start": 1731224907006, "stop": 1731224907007}], "start": 1731224907006, "stop": 1731224907044}
\ No newline at end of file
{"name": "反向用例-用户名正确-密码过短", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': '1'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125377630208\"}", "trace": "self = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E428320>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T004', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码过短', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json', case_data = {'password': '1', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert '账号或密码错误' == '账户错误或该租户未启用'\nE \nE - 账户错误或该租户未启用\nE + 账号或密码错误\n\ntest_case\\test_demo\\test_bpm.py:36: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845E428320>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T004', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码过短', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json', case_data = {'password': '1', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': '1'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"state\":false,\"message\":\"账号或密码错误\",\"code\":200,\"logId\":\"1855517125377630208\"}\n\ntest_case\\test_demo\\test_bpm.py:39: AssertionError"}, "attachments": [{"name": "log", "source": "d02f073d-86e0-4407-9b28-345251e87279-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_id", "value": "'T004'"}, {"name": "module", "value": "'认证接口'"}, {"name": "api", "value": "'登录系统'"}, {"name": "title", "value": "'反向用例-用户名正确-密码过短'"}, {"name": "level", "value": "'中'"}, {"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': '1'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1731224906830, "stop": 1731224906873, "uuid": "f13c7574-90e0-42bf-af4f-a7fe6acb1850", "historyId": "f4bbe037835d3f5edafde5bd0d60f40b", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM_demo"}, {"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "MrLee"}, {"name": "thread", "value": "12240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
\ No newline at end of file
{"uuid": "447a0a3f-3d2a-4137-9cbb-c7f5eee45bea", "befores": [{"name": "update_key", "status": "passed", "start": 1731224907845, "stop": 1731224907845}], "start": 1731224907845, "stop": 1731224907915}
\ No newline at end of file
{"uuid": "9cbc1fbb-e382-4349-b5c2-4f2ef8f76788", "befores": [{"name": "mime", "status": "passed", "start": 1731224906790, "stop": 1731224906790}], "start": 1731224906790, "stop": 1731224906820}
\ No newline at end of file
{"uuid": "c8d5c92a-e051-4579-b4c5-67d9789facbe", "befores": [{"name": "case_id", "status": "passed", "start": 1731224906789, "stop": 1731224906789}], "start": 1731224906789, "stop": 1731224906825}
\ No newline at end of file
{"uuid": "00d76256-d411-42ab-9dbf-5515e98e6587", "befores": [{"name": "expect_data", "status": "passed", "start": 1731224907375, "stop": 1731224907375}], "start": 1731224907375, "stop": 1731224907429}
\ No newline at end of file
{"uuid": "f4305857-fdb4-4d3a-aac2-f46fd014b085", "befores": [{"name": "api", "status": "passed", "start": 1731224906790, "stop": 1731224906790}], "start": 1731224906790, "stop": 1731224906824}
\ No newline at end of file
{"uuid": "70f96e3e-7248-4b94-a0a9-46adad897523", "befores": [{"name": "url", "status": "passed", "start": 1731224907374, "stop": 1731224907374}], "start": 1731224907374, "stop": 1731224907431}
\ No newline at end of file
{"uuid": "3a0a4896-b7d5-4e42-b11e-33d3ebe2e4fc", "befores": [{"name": "sql_type", "status": "passed", "start": 1731224906306, "stop": 1731224906306}], "start": 1731224906306, "stop": 1731224906343}
\ No newline at end of file
{"uuid": "18217565-1a36-48cd-9ee2-05551a58d325", "befores": [{"name": "level", "status": "passed", "start": 1731224907006, "stop": 1731224907006}], "start": 1731224907006, "stop": 1731224907048}
\ No newline at end of file
{"uuid": "42b733dc-d823-477c-8d0b-f4a15174ac93", "befores": [{"name": "level", "status": "passed", "start": 1731224907486, "stop": 1731224907486}], "start": 1731224907486, "stop": 1731224907520}
\ No newline at end of file
{"uuid": "fd4152d5-9d56-42b0-a3c3-bfaf64993f34", "befores": [{"name": "case_data", "status": "passed", "start": 1731224906952, "stop": 1731224906952}], "start": 1731224906952, "stop": 1731224906998}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'post', 'http://36.139.193.99:8088/auth', 'application/json', {'username': 'admin', 'password': '1'}, None, None, None)或{}
ERROR  root:test_bpm.py:38 断言失败,用例数据为:{'username': 'admin', 'password': '1'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"state":false,"message":"账号或密码错误","code":200,"logId":"1855517125377630208"}
\ No newline at end of file
{"uuid": "62e13922-3a06-48bc-8b0d-4f7cb248dc2b", "befores": [{"name": "module", "status": "passed", "start": 1731224907796, "stop": 1731224907796}], "start": 1731224907796, "stop": 1731224907840}
\ No newline at end of file
{"uuid": "f0c7c26e-faaa-4908-b432-244a0e87a361", "befores": [{"name": "case_id", "status": "passed", "start": 1731224906305, "stop": 1731224906305}], "start": 1731224906305, "stop": 1731224906351}
\ No newline at end of file
{"uuid": "b29cc0d0-b111-4658-9048-6a56736b77f7", "befores": [{"name": "method", "status": "passed", "start": 1731224907634, "stop": 1731224907634}], "start": 1731224907634, "stop": 1731224907683}
\ No newline at end of file
{"uuid": "92c5c33a-04b8-4c74-8ec6-5191c26d112a", "befores": [{"name": "case_id", "status": "passed", "start": 1731224907055, "stop": 1731224907055}], "start": 1731224907055, "stop": 1731224907103}
\ No newline at end of file
{"uuid": "32c39f00-acdf-4442-8349-57f0497459c2", "befores": [{"name": "expect_data", "status": "passed", "start": 1731224906829, "stop": 1731224906829}], "start": 1731224906829, "stop": 1731224906883}
\ No newline at end of file
{"uuid": "c363923c-fb0c-4475-9329-f8f8736e16bb", "befores": [{"name": "url", "status": "passed", "start": 1731224907153, "stop": 1731224907153}], "start": 1731224907153, "stop": 1731224907212}
\ No newline at end of file
{"uuid": "22b618a0-7416-4637-9545-4c5b42b3cca4", "befores": [{"name": "case_data", "status": "passed", "start": 1731224906894, "stop": 1731224906894}], "start": 1731224906894, "stop": 1731224906943}
\ No newline at end of file
{"uuid": "8ce41574-9b60-4acf-8686-99c2dc3bacfb", "befores": [{"name": "case_data", "status": "passed", "start": 1731224907439, "stop": 1731224907439}], "start": 1731224907439, "stop": 1731224907476}
\ No newline at end of file
{"uuid": "643b6dba-0752-4ee5-b4d6-9a02e2b173d2", "befores": [{"name": "expect_data", "status": "passed", "start": 1731224907797, "stop": 1731224907797}], "start": 1731224907797, "stop": 1731224907835}
\ No newline at end of file
{"uuid": "3b081f57-1846-4115-829d-1ff8999d8a36", "befores": [{"name": "module", "status": "passed", "start": 1731224906305, "stop": 1731224906305}], "start": 1731224906305, "stop": 1731224906351}
\ No newline at end of file
{"uuid": "ee8de307-ce8c-4e4f-b762-2239754487bf", "befores": [{"name": "sql_data", "status": "passed", "start": 1731224907845, "stop": 1731224907845}], "start": 1731224907845, "stop": 1731224907917}
\ No newline at end of file
{"uuid": "65613caa-03f6-44b3-a95f-a7301a9515d3", "befores": [{"name": "update_key", "status": "passed", "start": 1731224907612, "stop": 1731224907612}], "start": 1731224907612, "stop": 1731224907621}
\ No newline at end of file
{"uuid": "265577be-d3bf-4d85-b944-3a59885e3e5f", "befores": [{"name": "expect_data", "status": "passed", "start": 1731224907227, "stop": 1731224907227}], "start": 1731224907227, "stop": 1731224907267}
\ No newline at end of file
{"uuid": "ad1b352c-b811-40e2-9022-672e0a6351fe", "befores": [{"name": "url", "status": "passed", "start": 1731224907527, "stop": 1731224907527}], "start": 1731224907527, "stop": 1731224907604}
\ No newline at end of file
{"uuid": "be6260e5-a14b-49ae-a798-3b39a1fcb99f", "befores": [{"name": "case_data", "status": "passed", "start": 1731224906790, "stop": 1731224906790}], "start": 1731224906790, "stop": 1731224906819}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "481b78f7-b239-4cf4-ac51-fb5e1b7a1b57-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_id", "value": "'T011'"}, {"name": "module", "value": "'认证接口'"}, {"name": "api", "value": "'刷新token'"}, {"name": "title", "value": "'正向用例'"}, {"name": "level", "value": "'中'"}, {"name": "method", "value": "'get'"}, {"name": "url", "value": "'http://36.139.193.99:8088/refresh'"}, {"name": "mime", "value": "None"}, {"name": "case_data", "value": "None"}, {"name": "expect_data", "value": "{'loginStatus': True}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1731224907227, "stop": 1731224907261, "uuid": "00af9398-bb1b-4cc5-828c-828818cb267f", "historyId": "ffa44683f901143ac06df43628659da8", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "刷新token"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM_demo"}, {"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "MrLee"}, {"name": "thread", "value": "12240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, 'post', 'http://36.139.193.99:8088/api/org/v1/org/deleteOrg', 'x-www-form-urlencoded', 'testAddOrg', None, None, None)或{}
ERROR  root:__init__.py:50 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E4F6B40>, 'post', 'http://36.139.193.99:8088/api/org/v1/org/deleteOrg', 'x-www-form-urlencoded', 'testAddOrg', None, None, None)或{}错误的类型为:<class 'ValueError'>, 错误的描述为:方法:request_all,传入的媒体类型为:x-www-form-urlencoded, 没有符合的判断分支,可以自行封装,也可以继承之后覆盖
\ No newline at end of file
{"uuid": "c95a2ec7-a8cc-45a1-afd6-bd13dba6d119", "befores": [{"name": "method", "status": "passed", "start": 1731224907374, "stop": 1731224907374}], "start": 1731224907374, "stop": 1731224907433}
\ No newline at end of file
{"uuid": "c02cc770-0e27-41fe-8b3d-24157168154d", "befores": [{"name": "update_key", "status": "passed", "start": 1731224907797, "stop": 1731224907797}], "start": 1731224907797, "stop": 1731224907833}
\ No newline at end of file
{"uuid": "5daa8a85-ecf7-4b5a-a966-dda8b52c11ce", "befores": [{"name": "level", "status": "passed", "start": 1731224907152, "stop": 1731224907152}], "start": 1731224907152, "stop": 1731224907217}
\ No newline at end of file
{"uuid": "cc708b0c-716e-4309-a58a-c053f9d49287", "befores": [{"name": "sql_type", "status": "passed", "start": 1731224906952, "stop": 1731224906952}], "start": 1731224906952, "stop": 1731224906996}
\ No newline at end of file
{"uuid": "839fa88e-aa4d-4282-9e4a-9d5bfb359d85", "befores": [{"name": "update_key", "status": "passed", "start": 1731224907227, "stop": 1731224907227}], "start": 1731224907227, "stop": 1731224907263}
\ No newline at end of file
{"uuid": "067afae8-0bf8-4f7e-9abb-ab59230af7bc", "befores": [{"name": "sql_type", "status": "passed", "start": 1731224906357, "stop": 1731224906357}], "start": 1731224906357, "stop": 1731224906781}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'post', 'http://36.139.193.99:8088/auth', 'application/json', {'username': 'a', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}, None, None, None)或{}
INFO  root:test_bpm.py:41 断言成功,用例数据为:{'username': 'a', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"state":false,"message":"账户错误或该租户未启用","code":200,"logId":"1855517126325542912"}
\ No newline at end of file
{"uuid": "3f10f737-45a8-49c4-974d-fbb64748e09d", "befores": [{"name": "api", "status": "passed", "start": 1731224907611, "stop": 1731224907611}], "start": 1731224907611, "stop": 1731224907628}
\ No newline at end of file
{"uuid": "1dcec69b-a5bf-4df6-8b74-a591af2d1529", "befores": [{"name": "api", "status": "passed", "start": 1731224907527, "stop": 1731224907527}], "start": 1731224907527, "stop": 1731224907607}
\ No newline at end of file
{"uuid": "2281a50c-0654-4158-8ec7-991ff8e9a6f5", "befores": [{"name": "url", "status": "passed", "start": 1731224907690, "stop": 1731224907690}], "start": 1731224907690, "stop": 1731224907783}
\ No newline at end of file
{"uuid": "7d774eb6-9daa-4187-abd4-8345d476d72f", "befores": [{"name": "update_key", "status": "passed", "start": 1731224907634, "stop": 1731224907634}], "start": 1731224907634, "stop": 1731224907679}
\ No newline at end of file
{"uuid": "ca9c30e7-0490-4a4b-a7bd-c65d1cf20277", "befores": [{"name": "case_data", "status": "passed", "start": 1731224907611, "stop": 1731224907611}], "start": 1731224907611, "stop": 1731224907624}
\ No newline at end of file
{"uuid": "b78100e1-547e-43ac-95d6-1e1cc6f133fd", "befores": [{"name": "sql_data", "status": "passed", "start": 1731224907486, "stop": 1731224907486}], "start": 1731224907486, "stop": 1731224907516}
\ No newline at end of file
{"uuid": "105ae519-b242-4177-84ec-4ddd62642b42", "befores": [{"name": "case_id", "status": "passed", "start": 1731224907688, "stop": 1731224907688}], "start": 1731224907688, "stop": 1731224907793}
\ No newline at end of file
{"uuid": "21308ef0-bf39-4f94-bc0a-79576828d64a", "befores": [{"name": "expect_data", "status": "passed", "start": 1731224907634, "stop": 1731224907634}], "start": 1731224907634, "stop": 1731224907681}
\ No newline at end of file
{"uuid": "5101f4e9-813e-418b-877f-bcb4613d6a12", "befores": [{"name": "url", "status": "passed", "start": 1731224907486, "stop": 1731224907486}], "start": 1731224907486, "stop": 1731224907519}
\ No newline at end of file
{"uuid": "bc49eee8-724b-42c8-8031-201c9583f5ac", "befores": [{"name": "case_data", "status": "passed", "start": 1731224907690, "stop": 1731224907690}], "start": 1731224907690, "stop": 1731224907776}
\ No newline at end of file
{"uuid": "08e85630-9e5b-419f-a0da-ede27082678d", "befores": [{"name": "title", "status": "passed", "start": 1731224907055, "stop": 1731224907055}], "start": 1731224907055, "stop": 1731224907102}
\ No newline at end of file
{"uuid": "a0fdd90a-51fd-4678-807c-0435c854d7e1", "befores": [{"name": "expect_data", "status": "passed", "start": 1731224907486, "stop": 1731224907486}], "start": 1731224907486, "stop": 1731224907517}
\ No newline at end of file
{"uuid": "fa6f570f-b37f-4233-ba26-4ccd0d7208d2", "befores": [{"name": "level", "status": "passed", "start": 1731224907796, "stop": 1731224907796}], "start": 1731224907796, "stop": 1731224907838}
\ No newline at end of file
{"uuid": "63c61e6b-42d0-4a6f-aa85-89afaf0ac694", "befores": [{"name": "update_key", "status": "passed", "start": 1731224906357, "stop": 1731224906357}], "start": 1731224906357, "stop": 1731224906780}
\ No newline at end of file
{"uuid": "d9df977b-6f26-48ae-890c-b97b4530cd66", "befores": [{"name": "sql_type", "status": "passed", "start": 1731224907611, "stop": 1731224907611}], "start": 1731224907611, "stop": 1731224907622}
\ No newline at end of file
{"uuid": "7e069c9c-1862-40e3-a38b-0a0c0b8ec92d", "befores": [{"name": "api", "status": "passed", "start": 1731224907486, "stop": 1731224907486}], "start": 1731224907486, "stop": 1731224907521}
\ No newline at end of file
INFO  root:__init__.py:46 执行的功能为:request_all, 功能描述为:None, 所在的py文件为:C:\Python_Home\study_python\program01\MyApiAutoTest_v3_3\requests_method\requests_method.py, 所在的行为:31行,形参的值为:(<MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, 'Post', 'http://36.139.193.99:8088/auth', 'application/json', {'username': '', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}, None, None, None)或{}
INFO  root:test_bpm.py:41 断言成功,用例数据为:{'username': '', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"state":false,"message":"账户错误或该租户未启用","code":200,"logId":"1855517126103244800"}
\ No newline at end of file
{"uuid": "86b9c91a-e5c1-4f13-b94e-68c1fe364a70", "befores": [{"name": "sql_type", "status": "passed", "start": 1731224906790, "stop": 1731224906790}], "start": 1731224906790, "stop": 1731224906818}
\ No newline at end of file
{"uuid": "08e96450-c296-4aae-b54c-d4983342a20f", "befores": [{"name": "module", "status": "passed", "start": 1731224907006, "stop": 1731224907006}], "start": 1731224907006, "stop": 1731224907050}
\ No newline at end of file
{"uuid": "c7685bea-ad6d-42ea-b0c0-07bd6d8c87af", "befores": [{"name": "module", "status": "passed", "start": 1731224907152, "stop": 1731224907152}], "start": 1731224907152, "stop": 1731224907221}
\ No newline at end of file
{"uuid": "a105808d-85eb-47d8-b61c-ef98a3884d6f", "befores": [{"name": "case_id", "status": "passed", "start": 1731224907107, "stop": 1731224907107}], "start": 1731224907107, "stop": 1731224907150}
\ No newline at end of file
{"uuid": "4459a7a3-611f-4bf1-9619-b3090366b67d", "befores": [{"name": "mime", "status": "passed", "start": 1731224907486, "stop": 1731224907486}], "start": 1731224907486, "stop": 1731224907518}
\ No newline at end of file
{"uuid": "d74a1f05-0d82-455d-813e-396f819854d1", "befores": [{"name": "sql_data", "status": "passed", "start": 1731224906952, "stop": 1731224906952}], "start": 1731224906952, "stop": 1731224906996}
\ No newline at end of file
{"name": "反向用例-用户名正确-密码错误", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"token\":\"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MzEzMTExMzAsImlhdCI6MTczMTIyNDczMH0.nujtbsNRmxSXDP6PJ6dm6GmIZU7vY4kvjzeJ1sjh8mMRliOmtcsr39RJ2VL4vibY7iyZNci0GN0pEdy9ICBmFw\",\"username\":\"超级管理员\",\"account\":\"admin\",\"userId\":\"1\",\"expiration\":86400,\"loginStatus\":true,\"userAttrs\":{\"tenantId\":\"-1\"}}", "trace": "self = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845D127800>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T002', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码错误', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json'\ncase_data = {'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert None == False\nE + where None = <built-in method get of dict object at 0x000001845E502580>('state')\nE + where <built-in method get of dict object at 0x000001845E502580> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...AsImlhdCI6MTczMTIyNDczMH0.nujtbsNRmxSXDP6PJ6dm6GmIZU7vY4kvjzeJ1sjh8mMRliOmtcsr39RJ2VL4vibY7iyZNci0GN0pEdy9ICBmFw', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...AsImlhdCI6MTczMTIyNDczMH0.nujtbsNRmxSXDP6PJ6dm6GmIZU7vY4kvjzeJ1sjh8mMRliOmtcsr39RJ2VL4vibY7iyZNci0GN0pEdy9ICBmFw', ...} = json()\nE + where json = <Response [200]>.json\n\ntest_case\\test_demo\\test_bpm.py:36: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <MyApiAutoTest_v3_3.test_case.test_demo.test_bpm.TestBPM object at 0x000001845D127800>\nreq_fix = <MyApiAutoTest_v3_3.requests_method.requests_method.RequestsMethod object at 0x000001845E42A120>, case_id = 'T002', module = '认证接口', api = '登录系统'\ntitle = '反向用例-用户名正确-密码错误', level = '中', method = 'post', url = 'http://36.139.193.99:8088/auth', mime = 'application/json'\ncase_data = {'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM_demo\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"用例标题\")\n # @allure.severity(\"用例等级\")\n @pytest.mark.parametrize(\"case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, case_id, module, api, title, level, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n req = req_fix\n \n allure.dynamic.feature(module)\n allure.dynamic.story(api)\n allure.dynamic.title(title)\n allure.dynamic.severity(level)\n \n res = req.request_all(method, url, mime, case_data, sql_type, sql_data, update_key)\n \n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n logor.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\nE AssertionError: 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{\"token\":\"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MzEzMTExMzAsImlhdCI6MTczMTIyNDczMH0.nujtbsNRmxSXDP6PJ6dm6GmIZU7vY4kvjzeJ1sjh8mMRliOmtcsr39RJ2VL4vibY7iyZNci0GN0pEdy9ICBmFw\",\"username\":\"超级管理员\",\"account\":\"admin\",\"userId\":\"1\",\"expiration\":86400,\"loginStatus\":true,\"userAttrs\":{\"tenantId\":\"-1\"}}\n\ntest_case\\test_demo\\test_bpm.py:39: AssertionError"}, "attachments": [{"name": "log", "source": "ab335b82-6c10-4852-9219-53c65777096d-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_id", "value": "'T002'"}, {"name": "module", "value": "'认证接口'"}, {"name": "api", "value": "'登录系统'"}, {"name": "title", "value": "'反向用例-用户名正确-密码错误'"}, {"name": "level", "value": "'中'"}, {"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1731224906358, "stop": 1731224906412, "uuid": "91af28f1-0917-49b6-99a7-a7936693b813", "historyId": "2844246667da2592af2b30e55c79200d", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM_demo"}, {"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "MrLee"}, {"name": "thread", "value": "12240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
\ No newline at end of file
{"uuid": "1a043cbd-85da-43bf-845d-bce805e6f995", "befores": [{"name": "case_id", "status": "passed", "start": 1731224906894, "stop": 1731224906894}], "start": 1731224906894, "stop": 1731224906949}
\ No newline at end of file
{"uuid": "bb3817cd-3c64-484a-8a3a-b2bba2b3201c", "befores": [{"name": "mime", "status": "passed", "start": 1731224907439, "stop": 1731224907439}], "start": 1731224907439, "stop": 1731224907478}
\ No newline at end of file
{"uuid": "14b54e22-c29b-43b8-9c65-af26e71c4455", "befores": [{"name": "level", "status": "passed", "start": 1731224907439, "stop": 1731224907439}], "start": 1731224907439, "stop": 1731224907479}
\ No newline at end of file
{"name": "正向用例-用户和密码正确", "status": "passed", "attachments": [{"name": "log", "source": "2f26179a-7b0c-4063-8c83-b595ed6b60d2-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_id", "value": "'T001'"}, {"name": "module", "value": "'认证接口'"}, {"name": "api", "value": "'登录系统'"}, {"name": "title", "value": "'正向用例-用户和密码正确'"}, {"name": "level", "value": "'高'"}, {"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}"}, {"name": "expect_data", "value": "{'username': '超级管理员', 'account': 'admin', 'userId': '1', 'expiration': 86400, 'loginStatus': True}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1731224906307, "stop": 1731224906341, "uuid": "19f6f33b-9b89-4443-93cf-da97bcf92bac", "historyId": "91a3490156690cb2ff979c0e6b6ca1c6", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM_demo"}, {"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "MrLee"}, {"name": "thread", "value": "12240-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
\ No newline at end of file
{"uuid": "47231042-9316-4824-90eb-0c3a573c4579", "befores": [{"name": "update_key", "status": "passed", "start": 1731224907527, "stop": 1731224907527}], "start": 1731224907527, "stop": 1731224907590}
\ No newline at end of file
{"uuid": "4f32d984-768e-44af-972c-5e4890a01218", "befores": [{"name": "api", "status": "passed", "start": 1731224907373, "stop": 1731224907373}], "start": 1731224907373, "stop": 1731224907434}
\ No newline at end of file
{"uuid": "309f5e35-13da-4ef1-9312-e434120e5c22", "befores": [{"name": "title", "status": "passed", "start": 1731224907107, "stop": 1731224907107}], "start": 1731224907107, "stop": 1731224907148}
\ No newline at end of file
...@@ -8,9 +8,9 @@ ...@@ -8,9 +8,9 @@
# ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ # ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
import requests.sessions import requests.sessions
from MyApiAutoTest_v3_3 import log from ApiAutoTest import log
from MyApiAutoTest_v3_3.common.db import DB from ApiAutoTest.common.db import DB
from MyApiAutoTest_v3_3.common.read_basic_ini import ReadBasicIni from ApiAutoTest.common.read_basic_ini import ReadBasicIni
class RequestsMethod: class RequestsMethod:
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
# ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ # ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
import pytest import pytest
from MyApiAutoTest_v3_3.requests_method.requests_method import RequestsMethod from ApiAutoTest.requests_method.requests_method import RequestsMethod
# 会话级别的,一个程序只执行一次 # 会话级别的,一个程序只执行一次
@pytest.fixture(scope="session") @pytest.fixture(scope="session")
......
...@@ -9,9 +9,9 @@ ...@@ -9,9 +9,9 @@
import allure import allure
import pytest import pytest
from MyApiAutoTest_v3_3 import logor from ApiAutoTest import logor
from MyApiAutoTest_v3_3.common.read_excel import ReadExcel from ApiAutoTest.common.read_excel import ReadExcel
from MyApiAutoTest_v3_3.test_case.test_demo import USERNAME from ApiAutoTest.test_case.test_demo import USERNAME
class TestBPM: class TestBPM:
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
# ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ # ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
import pytest import pytest
from MyApiAutoTest_v3_3.requests_method.requests_method import RequestsMethod from ApiAutoTest.requests_method.requests_method import RequestsMethod
# 会话级别的,一个程序只执行一次 # 会话级别的,一个程序只执行一次
@pytest.fixture(scope="session") @pytest.fixture(scope="session")
......
...@@ -9,9 +9,9 @@ ...@@ -9,9 +9,9 @@
import allure import allure
import pytest import pytest
from MyApiAutoTest_v3_3 import logor from ApiAutoTest import logor
from MyApiAutoTest_v3_3.common.read_excel import ReadExcel from ApiAutoTest.common.read_excel import ReadExcel
from MyApiAutoTest_v3_3.test_case.test_zs import USERNAME from ApiAutoTest.test_case.test_zs import USERNAME
class TestBPM: class TestBPM:
......
API接口自动化测试python框架 # API接口自动化测试python框架
\ No newline at end of file
### 生成pytest测试报告
```
pytest ‐vv test_case ‐‐html=./report/html/pytest/test_1/test_report_1.html ‐‐self‐contained‐html ‐‐reruns 5 ‐‐reruns‐delay 0.5
```
### allure生成测试报告
1. 使用pytest执行用例,生成执行结果的json文件
```
pytest 用例模块/用例包 ‐‐alluredir=存放json文件的目录 ‐‐clean‐alluredir
```
2. 根据第一步测试结果的json文件生成报告。
```
i: 本地生成测试报告服务
allure serve 第一步存放测试结果json文件的目录
ii: 生成静态的报告
allure generate 第一步存放测试结果json文件的目录 ‐o 静态报告存放的目录
```
#### 例子
```
1、pytest test_case ‐‐alluredir=./report/test_json/allure_1 ‐‐clean‐alluredir
2(1)、allure serve ./report/test_json/allure_1
2(2)、allure generate ./report/test_json/allure_1 -o ./report/html/allure/allure_1
```
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title id="head-title">test_report_1.html</title>
<style type="text/css">body {
font-family: Helvetica, Arial, sans-serif;
font-size: 12px;
/* do not increase min-width as some may use split screens */
min-width: 800px;
color: #999;
}
h1 {
font-size: 24px;
color: black;
}
h2 {
font-size: 16px;
color: black;
}
p {
color: black;
}
a {
color: #999;
}
table {
border-collapse: collapse;
}
/******************************
* SUMMARY INFORMATION
******************************/
#environment td {
padding: 5px;
border: 1px solid #e6e6e6;
vertical-align: top;
}
#environment tr:nth-child(odd) {
background-color: #f6f6f6;
}
#environment ul {
margin: 0;
padding: 0 20px;
}
/******************************
* TEST RESULT COLORS
******************************/
span.passed,
.passed .col-result {
color: green;
}
span.skipped,
span.xfailed,
span.rerun,
.skipped .col-result,
.xfailed .col-result,
.rerun .col-result {
color: orange;
}
span.error,
span.failed,
span.xpassed,
.error .col-result,
.failed .col-result,
.xpassed .col-result {
color: red;
}
.col-links__extra {
margin-right: 3px;
}
/******************************
* RESULTS TABLE
*
* 1. Table Layout
* 2. Extra
* 3. Sorting items
*
******************************/
/*------------------
* 1. Table Layout
*------------------*/
#results-table {
border: 1px solid #e6e6e6;
color: #999;
font-size: 12px;
width: 100%;
}
#results-table th,
#results-table td {
padding: 5px;
border: 1px solid #e6e6e6;
text-align: left;
}
#results-table th {
font-weight: bold;
}
/*------------------
* 2. Extra
*------------------*/
.logwrapper {
max-height: 230px;
overflow-y: scroll;
background-color: #e6e6e6;
}
.logwrapper.expanded {
max-height: none;
}
.logwrapper.expanded .logexpander:after {
content: "collapse [-]";
}
.logwrapper .logexpander {
z-index: 1;
position: sticky;
top: 10px;
width: max-content;
border: 1px solid;
border-radius: 3px;
padding: 5px 7px;
margin: 10px 0 10px calc(100% - 80px);
cursor: pointer;
background-color: #e6e6e6;
}
.logwrapper .logexpander:after {
content: "expand [+]";
}
.logwrapper .logexpander:hover {
color: #000;
border-color: #000;
}
.logwrapper .log {
min-height: 40px;
position: relative;
top: -50px;
height: calc(100% + 50px);
border: 1px solid #e6e6e6;
color: black;
display: block;
font-family: "Courier New", Courier, monospace;
padding: 5px;
padding-right: 80px;
white-space: pre-wrap;
}
div.media {
border: 1px solid #e6e6e6;
float: right;
height: 240px;
margin: 0 5px;
overflow: hidden;
width: 320px;
}
.media-container {
display: grid;
grid-template-columns: 25px auto 25px;
align-items: center;
flex: 1 1;
overflow: hidden;
height: 200px;
}
.media-container--fullscreen {
grid-template-columns: 0px auto 0px;
}
.media-container__nav--right,
.media-container__nav--left {
text-align: center;
cursor: pointer;
}
.media-container__viewport {
cursor: pointer;
text-align: center;
height: inherit;
}
.media-container__viewport img,
.media-container__viewport video {
object-fit: cover;
width: 100%;
max-height: 100%;
}
.media__name,
.media__counter {
display: flex;
flex-direction: row;
justify-content: space-around;
flex: 0 0 25px;
align-items: center;
}
.collapsible td:not(.col-links) {
cursor: pointer;
}
.collapsible td:not(.col-links):hover::after {
color: #bbb;
font-style: italic;
cursor: pointer;
}
.col-result {
width: 130px;
}
.col-result:hover::after {
content: " (hide details)";
}
.col-result.collapsed:hover::after {
content: " (show details)";
}
#environment-header h2:hover::after {
content: " (hide details)";
color: #bbb;
font-style: italic;
cursor: pointer;
font-size: 12px;
}
#environment-header.collapsed h2:hover::after {
content: " (show details)";
color: #bbb;
font-style: italic;
cursor: pointer;
font-size: 12px;
}
/*------------------
* 3. Sorting items
*------------------*/
.sortable {
cursor: pointer;
}
.sortable.desc:after {
content: " ";
position: relative;
left: 5px;
bottom: -12.5px;
border: 10px solid #4caf50;
border-bottom: 0;
border-left-color: transparent;
border-right-color: transparent;
}
.sortable.asc:after {
content: " ";
position: relative;
left: 5px;
bottom: 12.5px;
border: 10px solid #4caf50;
border-top: 0;
border-left-color: transparent;
border-right-color: transparent;
}
.hidden, .summary__reload__button.hidden {
display: none;
}
.summary__data {
flex: 0 0 550px;
}
.summary__reload {
flex: 1 1;
display: flex;
justify-content: center;
}
.summary__reload__button {
flex: 0 0 300px;
display: flex;
color: white;
font-weight: bold;
background-color: #4caf50;
text-align: center;
justify-content: center;
align-items: center;
border-radius: 3px;
cursor: pointer;
}
.summary__reload__button:hover {
background-color: #46a049;
}
.summary__spacer {
flex: 0 0 550px;
}
.controls {
display: flex;
justify-content: space-between;
}
.filters,
.collapse {
display: flex;
align-items: center;
}
.filters button,
.collapse button {
color: #999;
border: none;
background: none;
cursor: pointer;
text-decoration: underline;
}
.filters button:hover,
.collapse button:hover {
color: #ccc;
}
.filter__label {
margin-right: 10px;
}
</style>
</head>
<body>
<h1 id="title">test_report_1.html</h1>
<p>Report generated on 10-Nov-2024 at 19:49:13 by <a href="https://pypi.python.org/pypi/pytest-html">pytest-html</a>
v4.1.1</p>
<div id="environment-header">
<h2>Environment</h2>
</div>
<table id="environment"></table>
<!-- TEMPLATES -->
<template id="template_environment_row">
<tr>
<td></td>
<td></td>
</tr>
</template>
<template id="template_results-table__body--empty">
<tbody class="results-table-row">
<tr id="not-found-message">
<td colspan="4">No results found. Check the filters.</th>
</tr>
</template>
<template id="template_results-table__tbody">
<tbody class="results-table-row">
<tr class="collapsible">
</tr>
<tr class="extras-row">
<td class="extra" colspan="4">
<div class="extraHTML"></div>
<div class="media">
<div class="media-container">
<div class="media-container__nav--left"><</div>
<div class="media-container__viewport">
<img src="" />
<video controls>
<source src="" type="video/mp4">
</video>
</div>
<div class="media-container__nav--right">></div>
</div>
<div class="media__name"></div>
<div class="media__counter"></div>
</div>
<div class="logwrapper">
<div class="logexpander"></div>
<div class="log"></div>
</div>
</td>
</tr>
</tbody>
</template>
<!-- END TEMPLATES -->
<div class="summary">
<div class="summary__data">
<h2>Summary</h2>
<div class="additional-summary prefix">
</div>
<p class="run-count">0 test took 0 ms.</p>
<p class="filter">(Un)check the boxes to filter the results.</p>
<div class="summary__reload">
<div class="summary__reload__button hidden" onclick="location.reload()">
<div>There are still tests running. <br />Reload this page to get the latest results!</div>
</div>
</div>
<div class="summary__spacer"></div>
<div class="controls">
<div class="filters">
<input checked="true" class="filter" name="filter_checkbox" type="checkbox" data-test-result="failed" disabled/>
<span class="failed">0 Failed,</span>
<input checked="true" class="filter" name="filter_checkbox" type="checkbox" data-test-result="passed" disabled/>
<span class="passed">0 Passed,</span>
<input checked="true" class="filter" name="filter_checkbox" type="checkbox" data-test-result="skipped" disabled/>
<span class="skipped">0 Skipped,</span>
<input checked="true" class="filter" name="filter_checkbox" type="checkbox" data-test-result="xfailed" disabled/>
<span class="xfailed">0 Expected failures,</span>
<input checked="true" class="filter" name="filter_checkbox" type="checkbox" data-test-result="xpassed" disabled/>
<span class="xpassed">0 Unexpected passes,</span>
<input checked="true" class="filter" name="filter_checkbox" type="checkbox" data-test-result="error" disabled/>
<span class="error">0 Errors,</span>
<input checked="true" class="filter" name="filter_checkbox" type="checkbox" data-test-result="rerun" disabled/>
<span class="rerun">0 Reruns</span>
</div>
<div class="collapse">
<button id="show_all_details">Show all details</button>&nbsp;/&nbsp;<button id="hide_all_details">Hide all details</button>
</div>
</div>
</div>
<div class="additional-summary summary">
</div>
<div class="additional-summary postfix">
</div>
</div>
<table id="results-table">
<thead id="results-table-head">
<tr>
<th class="sortable" data-column-type="result">Result</th>
<th class="sortable" data-column-type="testId">Test</th>
<th class="sortable" data-column-type="duration">Duration</th>
<th>Links</th>
</tr>
</thead>
</table>
</body>
<footer>
<div id="data-container" data-jsonblob="{&#34;environment&#34;: {&#34;Python&#34;: &#34;3.12.6&#34;, &#34;Platform&#34;: &#34;Windows-11-10.0.26100-SP0&#34;, &#34;Packages&#34;: {&#34;pytest&#34;: &#34;8.3.3&#34;, &#34;pluggy&#34;: &#34;1.5.0&#34;}, &#34;Plugins&#34;: {&#34;allure-pytest&#34;: &#34;2.13.5&#34;, &#34;anyio&#34;: &#34;4.6.0&#34;, &#34;Faker&#34;: &#34;30.0.0&#34;, &#34;dependency&#34;: &#34;0.6.0&#34;, &#34;html&#34;: &#34;4.1.1&#34;, &#34;metadata&#34;: &#34;3.1.1&#34;, &#34;ordering&#34;: &#34;0.6&#34;, &#34;rerunfailures&#34;: &#34;14.0&#34;}, &#34;JAVA_HOME&#34;: &#34;C:\\JAVAHOME\\Common\\binary\\JDK11&#34;}, &#34;tests&#34;: {}, &#34;renderCollapsed&#34;: [&#34;passed&#34;], &#34;initialSort&#34;: &#34;result&#34;, &#34;title&#34;: &#34;test_report_1.html&#34;}"></div>
<script>
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
const { getCollapsedCategory, setCollapsedIds } = require('./storage.js')
class DataManager {
setManager(data) {
const collapsedCategories = [...getCollapsedCategory(data.renderCollapsed)]
const collapsedIds = []
const tests = Object.values(data.tests).flat().map((test, index) => {
const collapsed = collapsedCategories.includes(test.result.toLowerCase())
const id = `test_${index}`
if (collapsed) {
collapsedIds.push(id)
}
return {
...test,
id,
collapsed,
}
})
const dataBlob = { ...data, tests }
this.data = { ...dataBlob }
this.renderData = { ...dataBlob }
setCollapsedIds(collapsedIds)
}
get allData() {
return { ...this.data }
}
resetRender() {
this.renderData = { ...this.data }
}
setRender(data) {
this.renderData.tests = [...data]
}
toggleCollapsedItem(id) {
this.renderData.tests = this.renderData.tests.map((test) =>
test.id === id ? { ...test, collapsed: !test.collapsed } : test,
)
}
set allCollapsed(collapsed) {
this.renderData = { ...this.renderData, tests: [...this.renderData.tests.map((test) => (
{ ...test, collapsed }
))] }
}
get testSubset() {
return [...this.renderData.tests]
}
get environment() {
return this.renderData.environment
}
get initialSort() {
return this.data.initialSort
}
}
module.exports = {
manager: new DataManager(),
}
},{"./storage.js":8}],2:[function(require,module,exports){
const mediaViewer = require('./mediaviewer.js')
const templateEnvRow = document.getElementById('template_environment_row')
const templateResult = document.getElementById('template_results-table__tbody')
function htmlToElements(html) {
const temp = document.createElement('template')
temp.innerHTML = html
return temp.content.childNodes
}
const find = (selector, elem) => {
if (!elem) {
elem = document
}
return elem.querySelector(selector)
}
const findAll = (selector, elem) => {
if (!elem) {
elem = document
}
return [...elem.querySelectorAll(selector)]
}
const dom = {
getStaticRow: (key, value) => {
const envRow = templateEnvRow.content.cloneNode(true)
const isObj = typeof value === 'object' && value !== null
const values = isObj ? Object.keys(value).map((k) => `${k}: ${value[k]}`) : null
const valuesElement = htmlToElements(
values ? `<ul>${values.map((val) => `<li>${val}</li>`).join('')}<ul>` : `<div>${value}</div>`)[0]
const td = findAll('td', envRow)
td[0].textContent = key
td[1].appendChild(valuesElement)
return envRow
},
getResultTBody: ({ testId, id, log, extras, resultsTableRow, tableHtml, result, collapsed }) => {
const resultBody = templateResult.content.cloneNode(true)
resultBody.querySelector('tbody').classList.add(result.toLowerCase())
resultBody.querySelector('tbody').id = testId
resultBody.querySelector('.collapsible').dataset.id = id
resultsTableRow.forEach((html) => {
const t = document.createElement('template')
t.innerHTML = html
resultBody.querySelector('.collapsible').appendChild(t.content)
})
if (log) {
// Wrap lines starting with "E" with span.error to color those lines red
const wrappedLog = log.replace(/^E.*$/gm, (match) => `<span class="error">${match}</span>`)
resultBody.querySelector('.log').innerHTML = wrappedLog
} else {
resultBody.querySelector('.log').remove()
}
if (collapsed) {
resultBody.querySelector('.collapsible > td')?.classList.add('collapsed')
resultBody.querySelector('.extras-row').classList.add('hidden')
} else {
resultBody.querySelector('.collapsible > td')?.classList.remove('collapsed')
}
const media = []
extras?.forEach(({ name, format_type, content }) => {
if (['image', 'video'].includes(format_type)) {
media.push({ path: content, name, format_type })
}
if (format_type === 'html') {
resultBody.querySelector('.extraHTML').insertAdjacentHTML('beforeend', `<div>${content}</div>`)
}
})
mediaViewer.setup(resultBody, media)
// Add custom html from the pytest_html_results_table_html hook
tableHtml?.forEach((item) => {
resultBody.querySelector('td[class="extra"]').insertAdjacentHTML('beforeend', item)
})
return resultBody
},
}
module.exports = {
dom,
htmlToElements,
find,
findAll,
}
},{"./mediaviewer.js":6}],3:[function(require,module,exports){
const { manager } = require('./datamanager.js')
const { doSort } = require('./sort.js')
const storageModule = require('./storage.js')
const getFilteredSubSet = (filter) =>
manager.allData.tests.filter(({ result }) => filter.includes(result.toLowerCase()))
const doInitFilter = () => {
const currentFilter = storageModule.getVisible()
const filteredSubset = getFilteredSubSet(currentFilter)
manager.setRender(filteredSubset)
}
const doFilter = (type, show) => {
if (show) {
storageModule.showCategory(type)
} else {
storageModule.hideCategory(type)
}
const currentFilter = storageModule.getVisible()
const filteredSubset = getFilteredSubSet(currentFilter)
manager.setRender(filteredSubset)
const sortColumn = storageModule.getSort()
doSort(sortColumn, true)
}
module.exports = {
doFilter,
doInitFilter,
}
},{"./datamanager.js":1,"./sort.js":7,"./storage.js":8}],4:[function(require,module,exports){
const { redraw, bindEvents, renderStatic } = require('./main.js')
const { doInitFilter } = require('./filter.js')
const { doInitSort } = require('./sort.js')
const { manager } = require('./datamanager.js')
const data = JSON.parse(document.getElementById('data-container').dataset.jsonblob)
function init() {
manager.setManager(data)
doInitFilter()
doInitSort()
renderStatic()
redraw()
bindEvents()
}
init()
},{"./datamanager.js":1,"./filter.js":3,"./main.js":5,"./sort.js":7}],5:[function(require,module,exports){
const { dom, find, findAll } = require('./dom.js')
const { manager } = require('./datamanager.js')
const { doSort } = require('./sort.js')
const { doFilter } = require('./filter.js')
const {
getVisible,
getCollapsedIds,
setCollapsedIds,
getSort,
getSortDirection,
possibleFilters,
} = require('./storage.js')
const removeChildren = (node) => {
while (node.firstChild) {
node.removeChild(node.firstChild)
}
}
const renderStatic = () => {
const renderEnvironmentTable = () => {
const environment = manager.environment
const rows = Object.keys(environment).map((key) => dom.getStaticRow(key, environment[key]))
const table = document.getElementById('environment')
removeChildren(table)
rows.forEach((row) => table.appendChild(row))
}
renderEnvironmentTable()
}
const addItemToggleListener = (elem) => {
elem.addEventListener('click', ({ target }) => {
const id = target.parentElement.dataset.id
manager.toggleCollapsedItem(id)
const collapsedIds = getCollapsedIds()
if (collapsedIds.includes(id)) {
const updated = collapsedIds.filter((item) => item !== id)
setCollapsedIds(updated)
} else {
collapsedIds.push(id)
setCollapsedIds(collapsedIds)
}
redraw()
})
}
const renderContent = (tests) => {
const sortAttr = getSort(manager.initialSort)
const sortAsc = JSON.parse(getSortDirection())
const rows = tests.map(dom.getResultTBody)
const table = document.getElementById('results-table')
const tableHeader = document.getElementById('results-table-head')
const newTable = document.createElement('table')
newTable.id = 'results-table'
// remove all sorting classes and set the relevant
findAll('.sortable', tableHeader).forEach((elem) => elem.classList.remove('asc', 'desc'))
tableHeader.querySelector(`.sortable[data-column-type="${sortAttr}"]`)?.classList.add(sortAsc ? 'desc' : 'asc')
newTable.appendChild(tableHeader)
if (!rows.length) {
const emptyTable = document.getElementById('template_results-table__body--empty').content.cloneNode(true)
newTable.appendChild(emptyTable)
} else {
rows.forEach((row) => {
if (!!row) {
findAll('.collapsible td:not(.col-links', row).forEach(addItemToggleListener)
find('.logexpander', row).addEventListener('click',
(evt) => evt.target.parentNode.classList.toggle('expanded'),
)
newTable.appendChild(row)
}
})
}
table.replaceWith(newTable)
}
const renderDerived = () => {
const currentFilter = getVisible()
possibleFilters.forEach((result) => {
const input = document.querySelector(`input[data-test-result="${result}"]`)
input.checked = currentFilter.includes(result)
})
}
const bindEvents = () => {
const filterColumn = (evt) => {
const { target: element } = evt
const { testResult } = element.dataset
doFilter(testResult, element.checked)
const collapsedIds = getCollapsedIds()
const updated = manager.renderData.tests.map((test) => {
return {
...test,
collapsed: collapsedIds.includes(test.id),
}
})
manager.setRender(updated)
redraw()
}
const header = document.getElementById('environment-header')
header.addEventListener('click', () => {
const table = document.getElementById('environment')
table.classList.toggle('hidden')
header.classList.toggle('collapsed')
})
findAll('input[name="filter_checkbox"]').forEach((elem) => {
elem.addEventListener('click', filterColumn)
})
findAll('.sortable').forEach((elem) => {
elem.addEventListener('click', (evt) => {
const { target: element } = evt
const { columnType } = element.dataset
doSort(columnType)
redraw()
})
})
document.getElementById('show_all_details').addEventListener('click', () => {
manager.allCollapsed = false
setCollapsedIds([])
redraw()
})
document.getElementById('hide_all_details').addEventListener('click', () => {
manager.allCollapsed = true
const allIds = manager.renderData.tests.map((test) => test.id)
setCollapsedIds(allIds)
redraw()
})
}
const redraw = () => {
const { testSubset } = manager
renderContent(testSubset)
renderDerived()
}
module.exports = {
redraw,
bindEvents,
renderStatic,
}
},{"./datamanager.js":1,"./dom.js":2,"./filter.js":3,"./sort.js":7,"./storage.js":8}],6:[function(require,module,exports){
class MediaViewer {
constructor(assets) {
this.assets = assets
this.index = 0
}
nextActive() {
this.index = this.index === this.assets.length - 1 ? 0 : this.index + 1
return [this.activeFile, this.index]
}
prevActive() {
this.index = this.index === 0 ? this.assets.length - 1 : this.index -1
return [this.activeFile, this.index]
}
get currentIndex() {
return this.index
}
get activeFile() {
return this.assets[this.index]
}
}
const setup = (resultBody, assets) => {
if (!assets.length) {
resultBody.querySelector('.media').classList.add('hidden')
return
}
const mediaViewer = new MediaViewer(assets)
const container = resultBody.querySelector('.media-container')
const leftArrow = resultBody.querySelector('.media-container__nav--left')
const rightArrow = resultBody.querySelector('.media-container__nav--right')
const mediaName = resultBody.querySelector('.media__name')
const counter = resultBody.querySelector('.media__counter')
const imageEl = resultBody.querySelector('img')
const sourceEl = resultBody.querySelector('source')
const videoEl = resultBody.querySelector('video')
const setImg = (media, index) => {
if (media?.format_type === 'image') {
imageEl.src = media.path
imageEl.classList.remove('hidden')
videoEl.classList.add('hidden')
} else if (media?.format_type === 'video') {
sourceEl.src = media.path
videoEl.classList.remove('hidden')
imageEl.classList.add('hidden')
}
mediaName.innerText = media?.name
counter.innerText = `${index + 1} / ${assets.length}`
}
setImg(mediaViewer.activeFile, mediaViewer.currentIndex)
const moveLeft = () => {
const [media, index] = mediaViewer.prevActive()
setImg(media, index)
}
const doRight = () => {
const [media, index] = mediaViewer.nextActive()
setImg(media, index)
}
const openImg = () => {
window.open(mediaViewer.activeFile.path, '_blank')
}
if (assets.length === 1) {
container.classList.add('media-container--fullscreen')
} else {
leftArrow.addEventListener('click', moveLeft)
rightArrow.addEventListener('click', doRight)
}
imageEl.addEventListener('click', openImg)
}
module.exports = {
setup,
}
},{}],7:[function(require,module,exports){
const { manager } = require('./datamanager.js')
const storageModule = require('./storage.js')
const genericSort = (list, key, ascending, customOrder) => {
let sorted
if (customOrder) {
sorted = list.sort((a, b) => {
const aValue = a.result.toLowerCase()
const bValue = b.result.toLowerCase()
const aIndex = customOrder.findIndex((item) => item.toLowerCase() === aValue)
const bIndex = customOrder.findIndex((item) => item.toLowerCase() === bValue)
// Compare the indices to determine the sort order
return aIndex - bIndex
})
} else {
sorted = list.sort((a, b) => a[key] === b[key] ? 0 : a[key] > b[key] ? 1 : -1)
}
if (ascending) {
sorted.reverse()
}
return sorted
}
const durationSort = (list, ascending) => {
const parseDuration = (duration) => {
if (duration.includes(':')) {
// If it's in the format "HH:mm:ss"
const [hours, minutes, seconds] = duration.split(':').map(Number)
return (hours * 3600 + minutes * 60 + seconds) * 1000
} else {
// If it's in the format "nnn ms"
return parseInt(duration)
}
}
const sorted = list.sort((a, b) => parseDuration(a['duration']) - parseDuration(b['duration']))
if (ascending) {
sorted.reverse()
}
return sorted
}
const doInitSort = () => {
const type = storageModule.getSort(manager.initialSort)
const ascending = storageModule.getSortDirection()
const list = manager.testSubset
const initialOrder = ['Error', 'Failed', 'Rerun', 'XFailed', 'XPassed', 'Skipped', 'Passed']
storageModule.setSort(type)
storageModule.setSortDirection(ascending)
if (type?.toLowerCase() === 'original') {
manager.setRender(list)
} else {
let sortedList
switch (type) {
case 'duration':
sortedList = durationSort(list, ascending)
break
case 'result':
sortedList = genericSort(list, type, ascending, initialOrder)
break
default:
sortedList = genericSort(list, type, ascending)
break
}
manager.setRender(sortedList)
}
}
const doSort = (type, skipDirection) => {
const newSortType = storageModule.getSort(manager.initialSort) !== type
const currentAsc = storageModule.getSortDirection()
let ascending
if (skipDirection) {
ascending = currentAsc
} else {
ascending = newSortType ? false : !currentAsc
}
storageModule.setSort(type)
storageModule.setSortDirection(ascending)
const list = manager.testSubset
const sortedList = type === 'duration' ? durationSort(list, ascending) : genericSort(list, type, ascending)
manager.setRender(sortedList)
}
module.exports = {
doInitSort,
doSort,
}
},{"./datamanager.js":1,"./storage.js":8}],8:[function(require,module,exports){
const possibleFilters = [
'passed',
'skipped',
'failed',
'error',
'xfailed',
'xpassed',
'rerun',
]
const getVisible = () => {
const url = new URL(window.location.href)
const settings = new URLSearchParams(url.search).get('visible')
const lower = (item) => {
const lowerItem = item.toLowerCase()
if (possibleFilters.includes(lowerItem)) {
return lowerItem
}
return null
}
return settings === null ?
possibleFilters :
[...new Set(settings?.split(',').map(lower).filter((item) => item))]
}
const hideCategory = (categoryToHide) => {
const url = new URL(window.location.href)
const visibleParams = new URLSearchParams(url.search).get('visible')
const currentVisible = visibleParams ? visibleParams.split(',') : [...possibleFilters]
const settings = [...new Set(currentVisible)].filter((f) => f !== categoryToHide).join(',')
url.searchParams.set('visible', settings)
window.history.pushState({}, null, unescape(url.href))
}
const showCategory = (categoryToShow) => {
if (typeof window === 'undefined') {
return
}
const url = new URL(window.location.href)
const currentVisible = new URLSearchParams(url.search).get('visible')?.split(',').filter(Boolean) ||
[...possibleFilters]
const settings = [...new Set([categoryToShow, ...currentVisible])]
const noFilter = possibleFilters.length === settings.length || !settings.length
noFilter ? url.searchParams.delete('visible') : url.searchParams.set('visible', settings.join(','))
window.history.pushState({}, null, unescape(url.href))
}
const getSort = (initialSort) => {
const url = new URL(window.location.href)
let sort = new URLSearchParams(url.search).get('sort')
if (!sort) {
sort = initialSort || 'result'
}
return sort
}
const setSort = (type) => {
const url = new URL(window.location.href)
url.searchParams.set('sort', type)
window.history.pushState({}, null, unescape(url.href))
}
const getCollapsedCategory = (renderCollapsed) => {
let categories
if (typeof window !== 'undefined') {
const url = new URL(window.location.href)
const collapsedItems = new URLSearchParams(url.search).get('collapsed')
switch (true) {
case !renderCollapsed && collapsedItems === null:
categories = ['passed']
break
case collapsedItems?.length === 0 || /^["']{2}$/.test(collapsedItems):
categories = []
break
case /^all$/.test(collapsedItems) || collapsedItems === null && /^all$/.test(renderCollapsed):
categories = [...possibleFilters]
break
default:
categories = collapsedItems?.split(',').map((item) => item.toLowerCase()) || renderCollapsed
break
}
} else {
categories = []
}
return categories
}
const getSortDirection = () => JSON.parse(sessionStorage.getItem('sortAsc')) || false
const setSortDirection = (ascending) => sessionStorage.setItem('sortAsc', ascending)
const getCollapsedIds = () => JSON.parse(sessionStorage.getItem('collapsedIds')) || []
const setCollapsedIds = (list) => sessionStorage.setItem('collapsedIds', JSON.stringify(list))
module.exports = {
getVisible,
hideCategory,
showCategory,
getCollapsedIds,
setCollapsedIds,
getSort,
setSort,
getSortDirection,
setSortDirection,
getCollapsedCategory,
possibleFilters,
}
},{}]},{},[4]);
</script>
</footer>
</html>
\ 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