自研SCADA-V1.0接口测试测试报告

执行结果

成功占比

运行信息

2025-10-23 15:32:45
10
4.223921 S
熊聪
2
20.00%

通过率趋势图

历史构建结果

执行时间 用例总数 成功用例数 通过率
2025-10-23 15:32:45 10 2 20.00%

本次运行详情

编号 用例模块 测试方法 用例标题 执行时间 执行结果 详细信息
1 01_用户/test_01获取验证码.py Test01获取验证码.test_01获取验证码 获取登陆图片验证码 0.451903 通过
DEBUG    /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:set_api_to_cache.py:31 ==============开始设置当前用例数据至缓存中==============
DEBUG  /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'
DEBUG  /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
DEBUG  /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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'
DEBUG  /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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
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:ocr_control.py:37 OCR识别结果: YML
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:jsonpath_control.py:118 OCR识别结果: YML
DEBUG  /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
INFO  /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
==========================================================
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:33 ==============开始执行assertions断言逻辑处理==============
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:91 实际结果:200。预期结果:200。比较方式:equal
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言
DEBUG  /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 失败
DEBUG    /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:cache_control.py:96 从缓存中获取数据, 缓存[key]为:captcha_code [val]为:YML
DEBUG  /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
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:set_api_to_cache.py:31 ==============开始设置当前用例数据至缓存中==============
ERROR  /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
DEBUG  /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
INFO  /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
==========================================================
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:33 ==============开始执行assertions断言逻辑处理==============
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言
DEBUG  /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 通过
DEBUG    /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:cache_control.py:96 从缓存中获取数据, 缓存[key]为:captcha_code [val]为:YML
INFO  /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
==========================================================
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:33 ==============开始执行assertions断言逻辑处理==============
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:91 实际结果:400。预期结果:400。比较方式:equal
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言
DEBUG  /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 失败
DEBUG    /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
INFO  /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
==========================================================
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:33 ==============开始执行assertions断言逻辑处理==============
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:91 实际结果:400。预期结果:400。比较方式:equal
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言
DEBUG  /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 失败
DEBUG    /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:cache_control.py:96 从缓存中获取数据, 缓存[key]为:scada_token [val]为:None
INFO  /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
==========================================================
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:33 ==============开始执行assertions断言逻辑处理==============
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言
DEBUG  /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 失败
DEBUG    /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:cache_control.py:96 从缓存中获取数据, 缓存[key]为:scada_token [val]为:None
INFO  /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
==========================================================
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:33 ==============开始执行assertions断言逻辑处理==============
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言
DEBUG  /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 失败
DEBUG    /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:cache_control.py:96 从缓存中获取数据, 缓存[key]为:scada_token [val]为:None
INFO  /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
==========================================================
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:33 ==============开始执行assertions断言逻辑处理==============
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言
DEBUG  /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 失败
DEBUG    /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:cache_control.py:96 从缓存中获取数据, 缓存[key]为:scada_token [val]为:None
INFO  /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
==========================================================
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:33 ==============开始执行assertions断言逻辑处理==============
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言
DEBUG  /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 失败
DEBUG    /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:cache_control.py:96 从缓存中获取数据, 缓存[key]为:scada_token [val]为:None
INFO  /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
==========================================================
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:33 ==============开始执行assertions断言逻辑处理==============
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言
DEBUG  /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 失败
DEBUG    /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:cache_control.py:96 从缓存中获取数据, 缓存[key]为:scada_token [val]为:None
INFO  /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
==========================================================
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:33 ==============开始执行assertions断言逻辑处理==============
DEBUG  /home/auto-api-test/logs/2025-10-23/2025-10-23--info.log:assert_control.py:67 执行接口响应断言
DEBUG  /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