我可以在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
,以便我可以对它们进行单元测试吗?!