在我看来,最好的解决方案是使用命令行界面,它将目录添加到,这样你就不必这样做(在课堂上完成)。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 package
import antigravity
# import the antigravity module
from antigravity import antigravity
# or an object inside the antigravity module
from 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
$ # Also works without discover for Python 3
$ # as suggested by @Burrito in the comments
$ python -m unittest
这将运行包中的所有模块。test*.py
test