在测试时容易模拟代码的模块。
python-auto-mock的Python项目详细描述
auto_mock是用于在单元测试期间模拟的模块。 它自动用默认值替换单元外部的所有变量和函数,以帮助开发人员在单元测试中排除外部状态。
安装
pip install python-auto-mock
用法
在本例中,我们将使用myclass.py
myclass.py
X=1Y=2Z=3classMyClass():defaddition_with_globals(self):print(X)print(Y)print(X+Y)returnX+Y
为了测试这个类,我们将编写一个测试脚本。
importauto_mockdeftest_my_class_addition():stubs={'X':36,'Y':35,}withauto_mock.full_mock('myclass','MyClass.addition_with_globals',stubs)asaddition_with_globals:ifaddition_with_globals()!=71:print("Addition is broken")defmain():test_my_class_addition()main()
正确完成此操作应打印出来
36 35 71
full_mock接受3个非可选参数。
- 代码所在的模块名。
- 正在测试的特定功能或方法。
- 要用其重写值的存根/模拟字典。
stubs变量包含被模拟的变量的名称。 在这个例子中,我们将X、Y和Z作为全局变量。 在本例中,我们只使用X和Y,因此它们是stubs字典中唯一的变量。
full_mock返回试图用模拟的外部变量测试的函数或方法。 如果变量不在stub中,则使用默认对象模拟它。 在with块中,您可以测试函数是否执行了它应该执行的操作。