如何为仅更新全局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 ...

答案
可以使用下面的@ patch.dict(dict_name,values)解决此问题

以上是关于如何为仅更新全局dict类型变量的函数编写unit_test-Python(pytest)的主要内容,如果未能解决你的问题,请参考以下文章

如何为combineLatest rxjs Angular编写Jasmine Unit测试用例

如何为具有泛型类型的箭头函数编写流类型

如何为解构对象中的嵌套函数编写类型?

如何为多个活动全局定义特定布局onclick函数

如何为具有不同公式的多个 glm 调用仅加载一次数据?

如何为通用数字编写函数?