从命令提示符运行unittests

时间:2016-06-22 06:00:07

标签: python unit-testing nose

我已经创建了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

2 个答案:

答案 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 参数化测试功能,它们还允许您减少单元测试中的代码量。