在测试时容易模拟代码的模块。

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个非可选参数。

  1. 代码所在的模块名。
  2. 正在测试的特定功能或方法。
  3. 要用其重写值的存根/模拟字典。

stubs变量包含被模拟的变量的名称。 在这个例子中,我们将XYZ作为全局变量。 在本例中,我们只使用XY,因此它们是stubs字典中唯一的变量。

full_mock返回试图用模拟的外部变量测试的函数或方法。 如果变量不在stub中,则使用默认对象模拟它。 在with块中,您可以测试函数是否执行了它应该执行的操作。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java出现编译错误,我不理解   java在gnu-trove库中是否有任何有序映射?   java Servlet应该有映射,但找不到Servlet   java时间和第二期显示1:10,而不是13:10   java Play Framework 1.2.7 Heroku更新崩溃   线程“main”java中的opencsv异常。lang.NoClassDefFoundError:org/apache/commons/lang3/ObjectUtils   selenium在java中隐藏警告消息   java使用ID引用将JSON实体反序列化为POJO   java无法在JRE 8中加载字体   一个线程中的异常/错误会使整个应用程序停止吗?   java访问重复子规则的元素标签;e、 g.用ANTLR解析(1,2,3)中的a   java如何从平移旋转中找到新坐标   使用HTML Java小程序托管jar文件存在安全问题   java如何按频率而不是字母顺序排列字符串数组   java清除bufferedReader和块以获得更多输入   java解密SAML2断言