如何为仅更新全局dict类型变量的函数编写unit_test-Python(pytest)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为仅更新全局dict类型变量的函数编写unit_test-Python(pytest)相关的知识,希望对你有一定的参考价值。
用于执行验证操作并更新全局字典的功能的单元测试代码-result_count = 'test_method':'Total_tested': 0, 'passed': 0, 'failed': 0
下面是函数
def validate_response(testmethod, response, expected_data):
ra = response.json()
expected = expected_data['payload']
if (response.status_code == expected['response_status']) \
and (result_count[testmethod['folder']]["FAILED"] < 10):
------code logic - checks using jsondiff and re.expressions--
else:
missmatch = 'response status code missmatch'
update_result(testmethod, 'status_code', expected_data, response, missmatch, fail=True)
result_count[testmethod['folder']]['FAILED'] += 1
需要为以上功能编写测试。检查result_count是否正确更新。
正则表达式库和jsondiff也用于所提到的函数中。
模拟全局变量并将其用于测试所需的帮助。
在执行下面的测试脚本期间,我遇到了全局变量result_count的关键错误。这意味着代码无法访问result_count ..更新后的键错误-抛出TypeError:'MagicMock'和'int']的实例之间不支持'<='>> [[作为错误当前的问题是,执行以下行代码时,不会更新result_count。partner_test.validate_response(test_input_mocker.method, response, expected_data)
我的单元测试脚本如下
@patch("tests.p_test.result")
@patch("tests.p_test.result_count")
def test_validate_response_pass(result_count_mocker, monkeypatch, result_mocker, test_input_mocker):
# Build data for validate response function
response = Resp(200, 'message': 'pong')
response_data = response.json()
expected_data = some_test_data
# global variable import and initialize result, result_count
from p_test import result, result_count
result_count.update(result_count_mocker.data)
result.update(result_mocker.data)
result_count_mocker.return_value = result_count_mocker.data
def update_result_mocker(*args):
mock operations here
return None
monkeypatch.setattr(partner_test, "update_result", update_result_mocker)
p_test.validate_response(test_input_mocker.method, response, expected_data)
测试功能中的Resp()是为模拟响应对象而创建的响应类。
执行验证操作并更新全局字典的函数的单元测试代码-result_count = 'test_method':'Total_tested':0,'passed':0,'Failed':0是下面的函数def ...
以上是关于如何为仅更新全局dict类型变量的函数编写unit_test-Python(pytest)的主要内容,如果未能解决你的问题,请参考以下文章