python unittest:运行单元测试的最佳方法是什么?

时间:2017-05-16 18:51:40

标签: python python-3.x python-import python-unittest

简短的问题

我可以在how to get unittest to work上找到许多资源和说明,我可以在我的计算机上重现这些资源和说明。但是,它们都是“虚拟”示例,因为它们具有平面文件树而不是通常在实际python项目中找到的文件树。我似乎无法在实际的python项目中找到令人满意的单元测试解决方案。

我的问题归结为:我如何运行测试用例?我应该在某处放置一个main(如__main__)测试脚本吗?我打电话给python3 myPackage/test/test_aModule.py吗?我打电话给python3 -m myPackage.test.test_aModule吗?

更多细节

根据我对此answer的理解,这就是我的文件树应该是这样的:

MyProject
├── myPackage
│   ├── aModule.py
│   ├── anotherModule.py
│   ├── __init__.py
│   └── test
│       ├── __init__.py
│       ├── test_aModule.py
│       └── test_anotherModule.py
├── README.md
└── setup.py

我有两个模块,第一个名为“aModule”

# aModule.py
class MyClass:
    def methodToTest(self, a, b):
        return a + b

,第二个叫“anotherModule”

# anotherModule.py
def functionToTest(a, b):
    return a * b

两个模块都经过单元测试。 “aModule”由“test_aModule”进行单元测试

# test_aModule.py
import unittest
from aModule import MyClass

myObject = MyClass()
print( "myObject(a,b) = ", myObject.methodToTest(1,2) )
print( "myObject(a,b) = ", functionToTest(1,2) )

if __name__ == '__main__':
    unittest.main()

和“anotherModule”由“test_anotherModule”进行单元测试

# test_anotherModule.py
import unittest
from anotherModule import functionToTest

if __name__ == '__main__':
    unittest.main()

运行这些测试的最佳方法是什么?

此外,关注this answer,从python -m myPackage.test.test_aModule输出MyProject/调用No module named 'aModule'This question建议将当前目录添加到sys.path。但是我发现这个解决方案非常令人惊讶:我应该将我在计算机上的所有python项目添加到sys.path,以便我可以对它们进行单元测试吗?!

0 个答案:

没有答案