| 1 |
01_用户/test_01获取验证码.py |
Test01获取验证码.test_01获取验证码 |
获取登陆图片验证码 |
0.451903 |
通过 |
|
[35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:set_api_to_cache.py:31 ==============开始设置当前用例数据至缓存中============== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:jsonpath_control.py:108 使用分隔符':'和索引1从'CODE-KEY:fd9154b1-6e49-4445-9fe8-ee849dfbcde8'中提取值: 'fd9154b1-6e49-4445-9fe8-ee849dfbcde8' [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:set_api_to_cache.py:64 设置当前用例response中的数据至缓存中,缓存[key]为:base64_key [val]为:fd9154b1-6e49-4445-9fe8-ee849dfbcde8 [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:jsonpath_control.py:108 使用分隔符'base64,'和索引1从'data:image/png;base64,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'中提取值: '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' [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:set_api_to_cache.py:64 设置当前用例response中的数据至缓存中,缓存[key]为:image_data [val]为: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 [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:ocr_control.py:37 OCR识别结果: YML [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:jsonpath_control.py:118 OCR识别结果: YML [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:set_api_to_cache.py:64 设置当前用例response中的数据至缓存中,缓存[key]为:captcha_code [val]为:YML [32mINFO [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:log_decorator.py:55 =========================================================== 用例ID: get_captcha_01 用例标题: 获取登陆图片验证码 请求路径: http://60.204.148.70:9998/captcha 请求方式: GET 请求头: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json;'} 请求内容: {} 响应内容: {"code":200,"key":"action.success","result":{"base64":"data:image/png;base64,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","key":"CODE-KEY:fd9154b1-6e49-4445-9fe8-ee849dfbcde8"},"success":true} 预期结果: [{'case': None, 'assert': {'断言1': {'response': '$.code', '==': 200}, '断言2': {'response': '$.success', '==': True}}}] 接口响应时长: 369.12 ms Http状态码: 200 ========================================================== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:33 ==============开始执行assertions断言逻辑处理============== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言 [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:91 实际结果:200。预期结果:200。比较方式:equal [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言 [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:91 实际结果:True。预期结果:True。比较方式:equal
|
| 2 |
01_用户/test_02用户登录.py |
Test02用户登录.test_02用户登录 |
登陆SCADA,返回:登陆成功 |
0.374633 |
失败 |
|
[35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:cache_control.py:96 从缓存中获取数据, 缓存[key]为:captcha_code [val]为:YML [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:cache_control.py:96 从缓存中获取数据, 缓存[key]为:base64_key [val]为:fd9154b1-6e49-4445-9fe8-ee849dfbcde8 [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:set_api_to_cache.py:31 ==============开始设置当前用例数据至缓存中============== [31m[1mERROR [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--error.log:jsonpath_control.py:38 用例id:logoin_01,jsonpath提取失败! 提取的数据: {'code': 400, 'key': 'action.failed', 'msg': '验证码错误', 'success': False} 表达式: $.result.accessToken [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:set_api_to_cache.py:64 设置当前用例response中的数据至缓存中,缓存[key]为:scada_token [val]为:None [32mINFO [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:log_decorator.py:55 =========================================================== 用例ID: logoin_01 用例标题: 登陆SCADA,返回:登陆成功 请求路径: http://60.204.148.70:9998/v1/auth/login 请求方式: POST 请求头: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json;', 'Content-Length': '210'} 请求内容: {"json": {"account": "admin", "password": "Td9saG/kHkfFyk0qsrh2vA==", "code": "YML", "clientType": "PC", "encrypted": true, "key": "fd9154b1-6e49-4445-9fe8-ee849dfbcde8", "loginType": 2, "region": 1, "rememberMe": true}} 响应内容: {"code":400,"key":"action.failed","msg":"验证码错误","success":false} 预期结果: [{'case': None, 'assert': {'断言1': {'response': '$.code', '==': 200}, '断言2': {'response': '$.success', '==': True}}}] 接口响应时长: 371.31 ms Http状态码: 200 ========================================================== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:33 ==============开始执行assertions断言逻辑处理============== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言 [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:91 实际结果:400。预期结果:200。比较方式:equal
self =
case_data = {'assertions': [{'details': {'conditions': [{'expect_value': 200, 'jsonpath': '$.code', 'operator': '=='}, {'expect_va..., 'operator': '=='}]}, 'group_name': None, 'type': 'case'}], 'case_id': 'logoin_01', 'data': None, 'export': None, ...}
@pytest.mark.parametrize('case_data', TestData)
def test_02用户登录(self, case_data):
"""
:param :
:return:
"""
case_data = HandlerSetup(case_data).setup()
res_info = HandleRequest(case_data).request()
HandlerTeardown(res_info).teardown()
> HandleAssert(res_info).assertions()
test_case/01_用户/test_02用户登录.py:28:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
utils/handler_assert/assert_control.py:34: in assertions
self.execute_assertions(dependencies)
utils/handler_assert/assert_control.py:45: in execute_assertions
self.execute_conditions(depend_type, details)
utils/handler_assert/assert_control.py:69: in execute_conditions
self.handle_response_or_db_assert(data, jsonpath, operator, expect_value)
utils/handler_assert/assert_control.py:93: in handle_response_or_db_assert
self.assert_func_mapping[assert_operator](actual_value, expect_value)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
actual_value = 400, expect_value = 200
def equal(actual_value: Any, expect_value: Any):
"""
判断是否相等
"""
> assert actual_value == expect_value
E AssertionError
utils/handler_assert/assert_type.py:18: AssertionError
|
| 3 |
01_用户/test_02用户登录.py |
Test02用户登录.test_02用户登录 |
登陆SCADA,提示:验证码不存在 |
0.398097 |
通过 |
|
[35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:cache_control.py:96 从缓存中获取数据, 缓存[key]为:captcha_code [val]为:YML [32mINFO [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:log_decorator.py:55 =========================================================== 用例ID: logoin_02 用例标题: 登陆SCADA,提示:验证码不存在 请求路径: http://60.204.148.70:9998/v1/auth/login 请求方式: POST 请求头: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json;', 'Content-Length': '210'} 请求内容: {"json": {"account": "admin", "password": "Td9saG/kHkfFyk0qsrh2vA==", "code": "YML", "clientType": "PC", "encrypted": true, "key": "4cb0b235-98ae-442a-ae68-09b6e18ab140", "loginType": 2, "region": 1, "rememberMe": true}} 响应内容: {"code":400,"key":"action.failed","msg":"验证码不存在","success":false} 预期结果: [{'case': None, 'assert': {'断言1': {'response': '$.code', '==': 400}, '断言2': {'response': '$.msg', '==': '验证码不存在'}}}] 接口响应时长: 395.62 ms Http状态码: 200 ========================================================== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:33 ==============开始执行assertions断言逻辑处理============== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言 [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:91 实际结果:400。预期结果:400。比较方式:equal [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言 [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:91 实际结果:验证码不存在。预期结果:验证码不存在。比较方式:equal
|
| 4 |
01_用户/test_02用户登录.py |
Test02用户登录.test_02用户登录 |
登陆SCADA,提示:验证码错误 |
0.366190 |
失败 |
|
[35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:cache_control.py:96 从缓存中获取数据, 缓存[key]为:base64_key [val]为:fd9154b1-6e49-4445-9fe8-ee849dfbcde8 [32mINFO [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:log_decorator.py:55 =========================================================== 用例ID: logoin_03 用例标题: 登陆SCADA,提示:验证码错误 请求路径: http://60.204.148.70:9998/v1/auth/login 请求方式: POST 请求头: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json;', 'Content-Length': '211'} 请求内容: {"json": {"account": "admin", "password": "Td9saG/kHkfFyk0qsrh2vA==", "code": "DUZE", "clientType": "PC", "encrypted": true, "key": "fd9154b1-6e49-4445-9fe8-ee849dfbcde8", "loginType": 2, "region": 1, "rememberMe": true}} 响应内容: {"code":400,"key":"action.failed","msg":"验证码错误","success":false} 预期结果: [{'case': None, 'assert': {'断言1': {'response': '$.code', '==': 400}, '断言2': {'response': '$.msg', '==': '验证码不存在'}}}] 接口响应时长: 363.68 ms Http状态码: 200 ========================================================== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:33 ==============开始执行assertions断言逻辑处理============== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言 [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:91 实际结果:400。预期结果:400。比较方式:equal [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言 [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:91 实际结果:验证码错误。预期结果:验证码不存在。比较方式:equal
self =
case_data = {'assertions': [{'details': {'conditions': [{'expect_value': 400, 'jsonpath': '$.code', 'operator': '=='}, {'expect_va..., 'operator': '=='}]}, 'group_name': None, 'type': 'case'}], 'case_id': 'logoin_03', 'data': None, 'export': None, ...}
@pytest.mark.parametrize('case_data', TestData)
def test_02用户登录(self, case_data):
"""
:param :
:return:
"""
case_data = HandlerSetup(case_data).setup()
res_info = HandleRequest(case_data).request()
HandlerTeardown(res_info).teardown()
> HandleAssert(res_info).assertions()
test_case/01_用户/test_02用户登录.py:28:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
utils/handler_assert/assert_control.py:34: in assertions
self.execute_assertions(dependencies)
utils/handler_assert/assert_control.py:45: in execute_assertions
self.execute_conditions(depend_type, details)
utils/handler_assert/assert_control.py:69: in execute_conditions
self.handle_response_or_db_assert(data, jsonpath, operator, expect_value)
utils/handler_assert/assert_control.py:93: in handle_response_or_db_assert
self.assert_func_mapping[assert_operator](actual_value, expect_value)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
actual_value = '验证码错误', expect_value = '验证码不存在'
def equal(actual_value: Any, expect_value: Any):
"""
判断是否相等
"""
> assert actual_value == expect_value
E AssertionError
utils/handler_assert/assert_type.py:18: AssertionError
|
| 5 |
01_用户/test_03密码修改.py |
Test03密码修改.test_03密码修改 |
修改密码,提示:密码修改成功 |
0.414800 |
失败 |
|
[35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:cache_control.py:96 从缓存中获取数据, 缓存[key]为:scada_token [val]为:None [32mINFO [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:log_decorator.py:55 =========================================================== 用例ID: update_passwd_01 用例标题: 修改密码,提示:密码修改成功 请求路径: http://60.204.148.70:9998/v1/user/update/password 请求方式: PUT 请求头: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json;', 'Authorization': 'None', 'Content-Length': '91'} 请求内容: {"json": {"oldPwd": "Jinko@2025~!@#$", "newPwd": "Jinko@2025~!@#$", "confirmPwd": "Jinko@2025~!@#$"}} 响应内容: {"code":401,"key":"auth.token.invalid","success":false} 预期结果: [{'case': None, 'assert': {'断言1': {'response': '$.code', '==': 200}, '断言2': {'response': '$.success', '==': True}, '断言3': {'response': '$.result', '==': '密码修改成功'}}}] 接口响应时长: 412.41 ms Http状态码: 200 ========================================================== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:33 ==============开始执行assertions断言逻辑处理============== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言 [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:91 实际结果:401。预期结果:200。比较方式:equal
self =
case_data = {'assertions': [{'details': {'conditions': [{'expect_value': 200, 'jsonpath': '$.code', 'operator': '=='}, {'expect_va...ator': '=='}]}, 'group_name': None, 'type': 'case'}], 'case_id': 'update_passwd_01', 'data': None, 'export': None, ...}
@pytest.mark.parametrize('case_data', TestData)
def test_03密码修改(self, case_data):
"""
:param :
:return:
"""
case_data = HandlerSetup(case_data).setup()
res_info = HandleRequest(case_data).request()
HandlerTeardown(res_info).teardown()
> HandleAssert(res_info).assertions()
test_case/01_用户/test_03密码修改.py:28:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
utils/handler_assert/assert_control.py:34: in assertions
self.execute_assertions(dependencies)
utils/handler_assert/assert_control.py:45: in execute_assertions
self.execute_conditions(depend_type, details)
utils/handler_assert/assert_control.py:69: in execute_conditions
self.handle_response_or_db_assert(data, jsonpath, operator, expect_value)
utils/handler_assert/assert_control.py:93: in handle_response_or_db_assert
self.assert_func_mapping[assert_operator](actual_value, expect_value)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
actual_value = 401, expect_value = 200
def equal(actual_value: Any, expect_value: Any):
"""
判断是否相等
"""
> assert actual_value == expect_value
E AssertionError
utils/handler_assert/assert_type.py:18: AssertionError
|
| 6 |
01_用户/test_03密码修改.py |
Test03密码修改.test_03密码修改 |
修改密码,提示:原密码错误 |
0.365658 |
失败 |
|
[35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:cache_control.py:96 从缓存中获取数据, 缓存[key]为:scada_token [val]为:None [32mINFO [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:log_decorator.py:55 =========================================================== 用例ID: update_passwd_02 用例标题: 修改密码,提示:原密码错误 请求路径: http://60.204.148.70:9998/v1/user/update/password 请求方式: PUT 请求头: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json;', 'Authorization': 'None', 'Content-Length': '92'} 请求内容: {"json": {"oldPwd": "Jinko@2025~!@#$1", "newPwd": "Jinko@2025~!@#$", "confirmPwd": "Jinko@2025~!@#$"}} 响应内容: {"code":401,"key":"auth.token.invalid","success":false} 预期结果: [{'case': None, 'assert': {'断言1': {'response': '$.code', '==': 400}, '断言2': {'response': '$.success', '==': True}, '断言3': {'response': '$.msg', 'startswith': '原密码错误'}}}] 接口响应时长: 363.27 ms Http状态码: 200 ========================================================== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:33 ==============开始执行assertions断言逻辑处理============== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言 [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:91 实际结果:401。预期结果:400。比较方式:equal
self =
case_data = {'assertions': [{'details': {'conditions': [{'expect_value': 400, 'jsonpath': '$.code', 'operator': '=='}, {'expect_va...startswith'}]}, 'group_name': None, 'type': 'case'}], 'case_id': 'update_passwd_02', 'data': None, 'export': None, ...}
@pytest.mark.parametrize('case_data', TestData)
def test_03密码修改(self, case_data):
"""
:param :
:return:
"""
case_data = HandlerSetup(case_data).setup()
res_info = HandleRequest(case_data).request()
HandlerTeardown(res_info).teardown()
> HandleAssert(res_info).assertions()
test_case/01_用户/test_03密码修改.py:28:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
utils/handler_assert/assert_control.py:34: in assertions
self.execute_assertions(dependencies)
utils/handler_assert/assert_control.py:45: in execute_assertions
self.execute_conditions(depend_type, details)
utils/handler_assert/assert_control.py:69: in execute_conditions
self.handle_response_or_db_assert(data, jsonpath, operator, expect_value)
utils/handler_assert/assert_control.py:93: in handle_response_or_db_assert
self.assert_func_mapping[assert_operator](actual_value, expect_value)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
actual_value = 401, expect_value = 400
def equal(actual_value: Any, expect_value: Any):
"""
判断是否相等
"""
> assert actual_value == expect_value
E AssertionError
utils/handler_assert/assert_type.py:18: AssertionError
|
| 7 |
01_用户/test_03密码修改.py |
Test03密码修改.test_03密码修改 |
修改密码,提示:原密码为空 |
0.373570 |
失败 |
|
[35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:cache_control.py:96 从缓存中获取数据, 缓存[key]为:scada_token [val]为:None [32mINFO [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:log_decorator.py:55 =========================================================== 用例ID: update_passwd_03 用例标题: 修改密码,提示:原密码为空 请求路径: http://60.204.148.70:9998/v1/user/update/password 请求方式: PUT 请求头: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json;', 'Authorization': 'None', 'Content-Length': '76'} 请求内容: {"json": {"oldPwd": "", "newPwd": "Jinko@2025~!@#$", "confirmPwd": "Jinko@2025~!@#$"}} 响应内容: {"code":401,"key":"auth.token.invalid","success":false} 预期结果: [{'case': None, 'assert': {'断言1': {'response': '$.code', '==': 400}, '断言2': {'response': '$.success', '==': True}, '断言3': {'response': '$.msg', 'startswith': '原密码为空'}}}] 接口响应时长: 371.12 ms Http状态码: 200 ========================================================== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:33 ==============开始执行assertions断言逻辑处理============== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言 [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:91 实际结果:401。预期结果:400。比较方式:equal
self =
case_data = {'assertions': [{'details': {'conditions': [{'expect_value': 400, 'jsonpath': '$.code', 'operator': '=='}, {'expect_va...startswith'}]}, 'group_name': None, 'type': 'case'}], 'case_id': 'update_passwd_03', 'data': None, 'export': None, ...}
@pytest.mark.parametrize('case_data', TestData)
def test_03密码修改(self, case_data):
"""
:param :
:return:
"""
case_data = HandlerSetup(case_data).setup()
res_info = HandleRequest(case_data).request()
HandlerTeardown(res_info).teardown()
> HandleAssert(res_info).assertions()
test_case/01_用户/test_03密码修改.py:28:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
utils/handler_assert/assert_control.py:34: in assertions
self.execute_assertions(dependencies)
utils/handler_assert/assert_control.py:45: in execute_assertions
self.execute_conditions(depend_type, details)
utils/handler_assert/assert_control.py:69: in execute_conditions
self.handle_response_or_db_assert(data, jsonpath, operator, expect_value)
utils/handler_assert/assert_control.py:93: in handle_response_or_db_assert
self.assert_func_mapping[assert_operator](actual_value, expect_value)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
actual_value = 401, expect_value = 400
def equal(actual_value: Any, expect_value: Any):
"""
判断是否相等
"""
> assert actual_value == expect_value
E AssertionError
utils/handler_assert/assert_type.py:18: AssertionError
|
| 8 |
01_用户/test_04二次验证码.py |
Test04二次验证码.test_04二次验证码 |
获取二次验证码,返回:验证码正确 |
0.373725 |
失败 |
|
[35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:cache_control.py:96 从缓存中获取数据, 缓存[key]为:scada_token [val]为:None [32mINFO [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:log_decorator.py:55 =========================================================== 用例ID: get_captcha2_01 用例标题: 获取二次验证码,返回:验证码正确 请求路径: http://60.204.148.70:9998/v1/mgc/strategy/code 请求方式: POST 请求头: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json;charset=utf-8', 'Authorization': 'None', 'Content-Length': '30'} 请求内容: {"json": {"verificationCode": "123456"}} 响应内容: {"code":401,"key":"auth.token.invalid","success":false} 预期结果: [{'case': None, 'assert': {'断言1': {'response': '$.code', '==': 200}, '断言2': {'response': '$.result.valid', '==': True}}}] 接口响应时长: 371.48 ms Http状态码: 200 ========================================================== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:33 ==============开始执行assertions断言逻辑处理============== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言 [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:91 实际结果:401。预期结果:200。比较方式:equal
self =
case_data = {'assertions': [{'details': {'conditions': [{'expect_value': 200, 'jsonpath': '$.code', 'operator': '=='}, {'expect_va...rator': '=='}]}, 'group_name': None, 'type': 'case'}], 'case_id': 'get_captcha2_01', 'data': None, 'export': None, ...}
@pytest.mark.parametrize('case_data', TestData)
def test_04二次验证码(self, case_data):
"""
:param :
:return:
"""
case_data = HandlerSetup(case_data).setup()
res_info = HandleRequest(case_data).request()
HandlerTeardown(res_info).teardown()
> HandleAssert(res_info).assertions()
test_case/01_用户/test_04二次验证码.py:28:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
utils/handler_assert/assert_control.py:34: in assertions
self.execute_assertions(dependencies)
utils/handler_assert/assert_control.py:45: in execute_assertions
self.execute_conditions(depend_type, details)
utils/handler_assert/assert_control.py:69: in execute_conditions
self.handle_response_or_db_assert(data, jsonpath, operator, expect_value)
utils/handler_assert/assert_control.py:93: in handle_response_or_db_assert
self.assert_func_mapping[assert_operator](actual_value, expect_value)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
actual_value = 401, expect_value = 200
def equal(actual_value: Any, expect_value: Any):
"""
判断是否相等
"""
> assert actual_value == expect_value
E AssertionError
utils/handler_assert/assert_type.py:18: AssertionError
|
| 9 |
01_用户/test_04二次验证码.py |
Test04二次验证码.test_04二次验证码 |
获取二次验证码,提示:验证码不存在 |
0.367407 |
失败 |
|
[35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:cache_control.py:96 从缓存中获取数据, 缓存[key]为:scada_token [val]为:None [32mINFO [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:log_decorator.py:55 =========================================================== 用例ID: get_captcha2_02 用例标题: 获取二次验证码,提示:验证码不存在 请求路径: http://60.204.148.70:9998/v1/mgc/strategy/code 请求方式: POST 请求头: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json;', 'Authorization': 'None', 'Content-Length': '30'} 请求内容: {"json": {"verificationCode": "111111"}} 响应内容: {"code":401,"key":"auth.token.invalid","success":false} 预期结果: [{'case': None, 'assert': {'断言1': {'response': '$.code', '==': 200}, '断言2': {'response': '$.result.valid', '==': False}}}] 接口响应时长: 364.9 ms Http状态码: 200 ========================================================== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:33 ==============开始执行assertions断言逻辑处理============== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言 [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:91 实际结果:401。预期结果:200。比较方式:equal
self =
case_data = {'assertions': [{'details': {'conditions': [{'expect_value': 200, 'jsonpath': '$.code', 'operator': '=='}, {'expect_va...rator': '=='}]}, 'group_name': None, 'type': 'case'}], 'case_id': 'get_captcha2_02', 'data': None, 'export': None, ...}
@pytest.mark.parametrize('case_data', TestData)
def test_04二次验证码(self, case_data):
"""
:param :
:return:
"""
case_data = HandlerSetup(case_data).setup()
res_info = HandleRequest(case_data).request()
HandlerTeardown(res_info).teardown()
> HandleAssert(res_info).assertions()
test_case/01_用户/test_04二次验证码.py:28:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
utils/handler_assert/assert_control.py:34: in assertions
self.execute_assertions(dependencies)
utils/handler_assert/assert_control.py:45: in execute_assertions
self.execute_conditions(depend_type, details)
utils/handler_assert/assert_control.py:69: in execute_conditions
self.handle_response_or_db_assert(data, jsonpath, operator, expect_value)
utils/handler_assert/assert_control.py:93: in handle_response_or_db_assert
self.assert_func_mapping[assert_operator](actual_value, expect_value)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
actual_value = 401, expect_value = 200
def equal(actual_value: Any, expect_value: Any):
"""
判断是否相等
"""
> assert actual_value == expect_value
E AssertionError
utils/handler_assert/assert_type.py:18: AssertionError
|
| 10 |
07_统计报表/test_01获取报表设备类型.py |
Test01获取报表设备类型.test_01获取报表设备类型 |
获取PCS报表 |
0.458461 |
失败 |
|
[35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:cache_control.py:96 从缓存中获取数据, 缓存[key]为:scada_token [val]为:None [32mINFO [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:log_decorator.py:55 =========================================================== 用例ID: get_report_type01 用例标题: 获取PCS报表 请求路径: http://60.204.148.70:9998/v1/curveReport/devices?deviceType=pcs 请求方式: GET 请求头: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json;', 'Authorization': 'None'} 请求内容: {"params": {"deviceType": "pcs"}} 响应内容: {"code":401,"key":"auth.token.invalid","success":false} 预期结果: [{'case': None, 'assert': {'断言1': {'response': '$.code', '==': 200}, '断言2': {'response': '$.key', '==': 'action_success'}}}] 接口响应时长: 456.03 ms Http状态码: 200 ========================================================== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:33 ==============开始执行assertions断言逻辑处理============== [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言 [35mDEBUG [0m /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:91 实际结果:401。预期结果:200。比较方式:equal
self =
case_data = {'assertions': [{'details': {'conditions': [{'expect_value': 200, 'jsonpath': '$.code', 'operator': '=='}, {'expect_va...tor': '=='}]}, 'group_name': None, 'type': 'case'}], 'case_id': 'get_report_type01', 'data': None, 'export': None, ...}
@pytest.mark.parametrize('case_data', TestData)
def test_01获取报表设备类型(self, case_data):
"""
:param :
:return:
"""
case_data = HandlerSetup(case_data).setup()
res_info = HandleRequest(case_data).request()
HandlerTeardown(res_info).teardown()
> HandleAssert(res_info).assertions()
test_case/07_统计报表/test_01获取报表设备类型.py:28:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
utils/handler_assert/assert_control.py:34: in assertions
self.execute_assertions(dependencies)
utils/handler_assert/assert_control.py:45: in execute_assertions
self.execute_conditions(depend_type, details)
utils/handler_assert/assert_control.py:69: in execute_conditions
self.handle_response_or_db_assert(data, jsonpath, operator, expect_value)
utils/handler_assert/assert_control.py:93: in handle_response_or_db_assert
self.assert_func_mapping[assert_operator](actual_value, expect_value)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
actual_value = 401, expect_value = 200
def equal(actual_value: Any, expect_value: Any):
"""
判断是否相等
"""
> assert actual_value == expect_value
E AssertionError
utils/handler_assert/assert_type.py:18: AssertionError
|