Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-如何为单元测试导入模块?_Python_Unit Testing_Import_Nose - Fatal编程技术网

Python-如何为单元测试导入模块?

Python-如何为单元测试导入模块?,python,unit-testing,import,nose,Python,Unit Testing,Import,Nose,我在模块(mod1)中有一些函数。我想对它们运行一些单元测试(特别是鼻子测试)。我所看到的关于使用unittest/NoTests的大多数介绍似乎只是从mod1 import func1中导入代码以使用进行测试。然而,从我收集的信息来看,我希望避免从mod1导入的模块(mod2)中导入任何代码,因此您只能直接在mod1中测试代码。相反,我应该模拟mod1导入的mod2函数。我是不是太傻了,从mod1导入func1不会从mod2导入代码?或者是否有其他方法导入func1,这样它就不会从mod2导入

我在模块(mod1)中有一些函数。我想对它们运行一些单元测试(特别是鼻子测试)。我所看到的关于使用unittest/NoTests的大多数介绍似乎只是从mod1 import func1中导入代码以使用
进行测试。然而,从我收集的信息来看,我希望避免从mod1导入的模块(mod2)中导入任何代码,因此您只能直接在mod1中测试代码。相反,我应该模拟mod1导入的mod2函数。我是不是太傻了,
从mod1导入func1
不会从mod2导入代码?或者是否有其他方法导入func1,这样它就不会从mod2导入任何代码?多谢各位

这是您的设计决策,m1与m2交互,因此您可以选择

1) Test mod1 with mod2
2) Mock functions in mo2d
但是,有一些方法可以避免直接导入。请查看此代码

https://github.com/django/django/blob/master/django/db/models/loading.py
https://github.com/tangentlabs/django-oscar/blob/master/oscar/core/loading.py

希望这能帮助您稍微分离模块(如果确实需要的话)

那么“Mock functions in mod2”是否意味着我只导入mod1,然后导入mod2,然后我只模拟mod2导入的每个函数,这样就不会实际使用它们?是否有某种方法可以确保它们中的每一个都被模拟过,并且不会使用任何真正的函数?当运行您的测试框架时,必须有一种类似于untest2中的“setubStubs”的方法。这里是放置此代码的正确位置。这个东西可能有用