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

2024-09-22 14:23:57 发布

您现在位置:Python中文网/ 问答频道 /正文

当谈到python单元测试时,我是个新手,但我渴望学习! 我刚刚读到python setup.py test可以运行从unittest类派生的所有套件。我想知道我是否也可以使用setup.py来运行一个套件和/或一个测试用例,也许可以在前面的命令中添加一些修饰符,比如python setup.py tests suitename。如果是的话,你能告诉我一些文件/例子吗?


Tags: 文件pytest命令套件setup测试用例tests
3条回答

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已经构建好,从setup()元数据中提取test_suite值,配置一个了解压缩的egg的测试加载程序,然后运行^{}函数。

如果您只需要运行一个测试,已经构建了您的egg,而不是使用压缩的egg运行这个测试,那么您还可以使用^{} command line interface,它可以执行几乎所有其他操作:

python -m unittest yourpackage.tests.TestClass.test_method

将指示unittest只运行非常特定的测试方法。

你们都错了,setup.py test可以和-s选项一起使用,就像python -m unittest一样:

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

setup.py测试

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

相关问题 更多 >