unittest是否允许通过“setup.py test”进行单个案例/套件测试?

时间:2014-01-16 16:35:20

标签: python unit-testing setuptools

我是python单元测试的新手,但我渴望学习! 我刚读过python setup.py test可以运行从unittest类派生的所有套件。我想知道我是否也可以使用setup.py运行单个套件和/或单个测试用例,可能会在上一个命令中添加一些修饰符,如python setup.py tests suitename。如果是这样,请指点我的任何文档/示例?

5 个答案:

答案 0 :(得分:18)

你们都错了,setup.py test可以-s选项与python -m unittest同样使用:

cd root_of_your_package
python setup.py test -s tests.TestClass.test_method

答案 1 :(得分:15)

setup.py test跑步者相当有限;它只支持让您指定特定模块。使用--help开关时,会给出命令行开关的文档:

python setup.py test --help
Common commands: (see '--help-commands' for more)
  [ ... cut ... ]

Options for 'test' command:
  --test-module (-m)  Run 'test_suite' in specified module
  --test-suite (-s)   Test suite to run (e.g. 'some_module.test_suite')

  [ ... more cut ... ]

所以python setup.py test -m your.package.tests.test_module会限制仅从test_module.py文件运行测试。

所有test命令确实确实已经构建了你的egg,从test_suite元数据中提取setup()值,配置一个了解压缩蛋的测试加载器,然后运行unittest.main()函数。

如果你只需要进行一次测试,已经建立了你的鸡蛋,没有用拉链蛋来运行它,那么你也可以使用unittest command line interface,这几乎可以做其他所有事情:

python -m unittest yourpackage.tests.TestClass.test_method

会指示unittest仅运行非常具体的测试方法。

答案 2 :(得分:3)

setup.py test

setup.py测试不是那么灵活,但这里有另一种选择:

unittest模块可以运行特定的测试方法

From the Documentation on unittest

可以从命令行使用unittest模块从模块,类甚至单独的测试方法运行测试:

python -m unittest test_module1 test_module2
python -m unittest test_module.TestClass
python -m unittest test_module.TestClass.test_method

您可以使用模块名称和完全限定的类或方法名称的任意组合传递列表。

您可以通过传递-v标志来运行具有更多详细信息(更高详细程度)的测试:

python -m unittest -v test_module

有关所有命令行选项的列表:

python -m unittest -h

答案 3 :(得分:0)

如果您使用pytest进行单元测试,则可以通过避免th:insert文件直接运行文件。

为我运行所有测试是:

setup.py

运行特定测试:

python setup.py test

希望它有所帮助。

(我知道这篇文章已经有点老了,但我来到这里寻找运行方式单独运行pytest测试,认为它可能对某人有用)

答案 4 :(得分:0)

如果是pytest,请运行特定测试:

python setup.py test --addopts tests/jobs/test_data_monitoring.py::TestDataMonitoring::test_dataframe__bulk_update