我已经创建了python文件和单元测试,但我不明白如何在命令提示符下一次运行所有测试。
文件结构
- py
- __init__.py
- file1.py
- file2.py
- tests
__init__.py
- test_file1.py
- test_file2.py
请让我知道同样的事。 当我尝试使用nosetests运行测试时,它说我
no module name file1
no module name file2
答案 0 :(得分:3)
以下是Nose文档的摘录(因为您标记了nose
)
nose自动从其工作目录中找到的python源文件,目录和包中收集测试(默认为当前工作目录)。任何与testMatch regular匹配的python源文件,目录或包表达式(默认情况下:
(?:\b|_)[Tt]est
将被收集作为测试(或测试集合的源)。此外,将检查工作目录中找到的所有其他包的python源文件或与testMatch匹配的目录。发现一直沿着树下降,所以将收集package.tests和package.sub.tests以及package.sub.sub2.tests。
强调我的。
您只需从项目的根目录运行所有测试用例:
$ cd /path/to/your/project
$ nosetests
答案 1 :(得分:2)
对于简单发现,您可以使用unittest
模块的内置命令行功能
$ cd /path/to/your/project/tests
$ python -m unittest discover
或者,如果您的tests
目录中有__init__.py
,则可以执行
$ cd /path/to/your/project
$ python -m unittest discover -s ./tests
如果您绝对必须使用python 2.6,python docs表示您可以安装unittest2
,这是python 2.7中添加的新功能的后端。你以稍微不同的方式调用它
$ unit2 discover
另外,如果你还没有走过unittest
测试兔洞那么远,我建议你查看pytest
。在编写测试时,它需要更少的样板,并允许您只使用内置的assert
。它还附带了一些其他很酷的功能,如 fixtures 和参数化测试功能,它们还允许您减少单元测试中的代码量。