无网络环境下如何单元测试创建ServiceNow Client的Python函数?
无网络环境下测试ServiceNow客户端创建函数的方案
要测试的核心内容
- 函数能否正确接收
url、user_name、pwd三个输入参数,并精准传递给aiosnow.Client的构造方法 - 函数返回值是否为
aiosnow.Client类型的实例(Mock后的实例也符合要求) - 验证
basic_auth参数是否被正确构造成包含用户名和密码的元组,再传递给Client
需要Mock的部分
必须Mockaiosnow.Client类。因为原Client的构造方法大概率会在初始化阶段尝试建立网络连接(哪怕只是握手校验),无网络环境下会直接抛出连接错误。Mock这个类后,既能避免实际网络调用,还能方便验证构造参数是否符合预期。
示例测试代码(基于pytest+unittest.mock)
from unittest.mock import patch from your_module import create_snow_client # 替换成你的函数所在模块名 def test_create_snow_client(): # 准备测试用例参数 test_url = "https://test.servicenow.com" test_user = "test_admin" test_pwd = "test_passwd" # Mock目标Client类 with patch("your_module.Client") as mock_client: # 调用待测试函数 client_instance = create_snow_client(test_url, test_user, test_pwd) # 验证Client是否按预期参数被实例化 mock_client.assert_called_once_with( test_url, basic_auth=(test_user, test_pwd) ) # 验证返回值是Client的实例(Mock实例) assert isinstance(client_instance, mock_client.return_value.__class__)
内容的提问来源于stack exchange,提问作者Showertime
相关产品推荐
相关产品推荐

