我认为最好的解决方案是使用
unittest命令行界面,该界面会将目录添加到,
sys.path因此你不必(在
TestLoader类中完成)。
例如,对于这样的目录结构:
new_project├── antigravity.py└── test_antigravity.py
你可以运行:
$ cd new_project$ python -m unittest test_antigravity
对于像你这样的目录结构:
new_project├── antigravity│ ├── __init__.py # make it a package│ └── antigravity.py└── test ├── __init__.py # also make test a package └── test_antigravity.py
在test包内的测试模块中,你可以antigravity照常导入包及其模块:
# import the packageimport antigravity# import the antigravity modulefrom antigravity import antigravity# or an object inside the antigravity modulefrom antigravity.antigravity import my_object
运行一个测试模块:
要运行单个测试模块,在这种情况下test_antigravity.py:
$ cd new_project$ python -m unittest test.test_antigravity
只需以导入模块的相同方式引用测试模块即可。
运行单个测试用例或测试方法:
你也可以运行一个TestCase或一个测试方法:
$ python -m unittest test.test_antigravity.GravityTestCase$ python -m unittest test.test_antigravity.GravityTestCase.test_method
运行所有测试:
你还可以使用测试发现,它将为你发现并运行所有测试,它们必须是命名为模块或包的模块test*.py(可以通过
-p, –
pattern标记进行更改):
$ cd new_project$ python -m unittest discover
这将运行包中的所有
test*.py模块
test。



