如何在通用测试目录结构中运行单元测试
在 Python 中,通常的做法是在单独的测试目录中组织单元测试。然而,这提出了如何有效地执行这些测试的问题。
问题
当尝试从测试目录中运行 python test_antigravity.py 时,导入由于模块不在路径上,反重力模块发生故障。修改 PYTHONPATH 或使用其他搜索路径技巧可能是可行的,但它们缺乏简单性,特别是对于只想验证测试结果的用户。
解决方案
推荐的方法是使用unittest命令行界面。它的 TestLoader 类将必要的目录添加到 sys.path 中,解决了路径问题。
例如,在这样的目录结构中:
new_project ├── antigravity.py └── test_antigravity.py
您可以使用以下命令执行测试:
$ cd new_project $ python -m unittest test_antigravity
对于像提供的目录结构:
new_project ├── antigravity │ ├── __init__.py │ └── antigravity.py └── test ├── __init__.py └── test_antigravity.py
您可以实现通过将反重力和测试声明为带有 __init__.py 文件的包来实现类似的功能。在测试模块中,您可以照常导入反重力包及其模块。
运行特定测试
运行单个测试模块,例如 test_antigravity.py :
$ cd new_project $ python -m unittest test.test_antigravity
您还可以运行单独的测试用例或方法:
$ 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
对于喜欢简单的用户,您可以指示他们运行以下命令命令:
To run the unit tests, do: $ python -m unittest discover
以上是如何在 Python 中从单独的测试目录高效运行单元测试?的详细内容。更多信息请关注PHP中文网其他相关文章!