python unittest-修补整个导入

时间:2019-03-07 22:08:54

标签: python python-unittest

我们的产品导入了库winreg

我正在编写一个我想模拟整个库的测试。

我不想模拟特定的功能,也不想枚举所有功能并模拟它们。我想模拟整个库,以便导入或使用的任何库实例都使用模拟。

这可能吗?

2 个答案:

答案 0 :(得分:1)

您尝试过patch吗?

尽管Python doc的示例不一定很直观地进行设置:

 @patch('mymodule.SomeClass')
 class MyTest(TestCase):

答案 1 :(得分:0)

这是一个棘手的问题。我认为您最好的选择是将真实库“ winreg”放在一个文件夹位置,并将模拟库放在另一个位置,并在运行单元测试时进行一些偷偷摸摸的PYTHONPATH操作。

文件夹结构并假设winreg是python模块,但是如果存在文件夹,仍然可以使用。

size

在Linux系统上执行单元测试时:

real/winreg.py
mock/winreg.py

运行常规代码时,将PYTHONPATH翻转回“真实”库。您只需要确保在运行单元测试时未在PYTHONPATH中拾取真实库,这可能会有些麻烦,具体取决于您的设置。