测试发现:以适合于copy/pas的格式列出所有测试

2024-05-15 08:42:48 发布

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

我有很多测试。我可以用以下方法运行它们:

./manage.py test

它将执行测试发现并为我运行所有测试。好的。现在我要运行一个特定的测试:

$ ./manage.py test animals.tests.AnimalTestCase.test_animals_can_speak

我能在命令行上输入吗?shell不会有帮助,因为:

  • 它使用斜线而不是点
  • 它不知道unittest模块(当然),所以不能查看animals/tests.py

shell(通过使用tab completion)可以帮助我完成的最大任务是:

$ ./manage.py test animals/tests.py

这对我一点帮助都没有。我想要这样的东西:

$ ./manage.py discover-tests

animals
animals.tests
animals.tests.AnimalTestCase
animals.tests.AnimalTestCase.test_animals_can_speak
...

基本上,我想让django(unittest?)发现的测试列表显示给我,而不是运行,这样我就可以手动选择一个,复制/粘贴并运行它

有没有办法做到这一点,或者我需要推出自己的discover-tests


Tags: 模块方法命令行pytestmanagetestsunittest
1条回答
网友
1楼 · 发布于 2024-05-15 08:42:48

默认测试运行程序(AFAIK)不能提供所有可用测试的列表。但是,第三方测试框架nose有一个collect选项可以为您完成这项工作

另一个选项是通过扩展django.test.runner.DiscoverRunner来创建自己的测试运行程序,以创建具有此功能的新测试运行程序。当然,您还需要将自己的命令添加到manage.py中

或者,如果您不想在上面花费太多时间,可以向DiscoverRunner添加一行代码来打印它发现的每个测试。您可以保存输出

相关问题 更多 >