测试发现:以适合 copy/paste 的格式列出所有测试
Test discovery: list all tests in a format suitable for copy/paste
我有一堆测试。我可以 运行 他们:
./manage.py test
这将为我执行测试发现和 运行 所有测试。美好的。现在我想运行一个特定的测试:
$ ./manage.py test animals.tests.AnimalTestCase.test_animals_can_speak
我可以在命令行 上输入一些帮助吗? shell 无济于事,因为:
- 它使用斜线而不是点
- 它不知道 unittest 模块(当然),所以无法查看内部
animals/tests.py
shell 最多可以帮助我(通过使用制表符补全):
$ ./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?)发现的测试列表,而不是 运行,这样我就可以手动 select 一个,copy/paste 和 运行 它。
有没有办法实现,或者我需要自己动手 discover-tests
?
默认测试运行器无法(AFAIK)提供所有可用测试的列表。但是,第三方测试框架 nose 有一个可以为您执行此操作的收集选项。
另一种选择是通过扩展 django.test.runner.DiscoverRunner 来创建您自己的测试运行器,以创建具有此功能的新测试运行器。当然,您还需要将自己的命令添加到 manage.py。
或者,如果您不想在上面花费太多时间,请向 DiscoverRunner 添加一行代码以打印它发现的每个测试。您可以保存输出。
我有一堆测试。我可以 运行 他们:
./manage.py test
这将为我执行测试发现和 运行 所有测试。美好的。现在我想运行一个特定的测试:
$ ./manage.py test animals.tests.AnimalTestCase.test_animals_can_speak
我可以在命令行 上输入一些帮助吗? shell 无济于事,因为:
- 它使用斜线而不是点
- 它不知道 unittest 模块(当然),所以无法查看内部
animals/tests.py
shell 最多可以帮助我(通过使用制表符补全):
$ ./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?)发现的测试列表,而不是 运行,这样我就可以手动 select 一个,copy/paste 和 运行 它。
有没有办法实现,或者我需要自己动手 discover-tests
?
默认测试运行器无法(AFAIK)提供所有可用测试的列表。但是,第三方测试框架 nose 有一个可以为您执行此操作的收集选项。
另一种选择是通过扩展 django.test.runner.DiscoverRunner 来创建您自己的测试运行器,以创建具有此功能的新测试运行器。当然,您还需要将自己的命令添加到 manage.py。
或者,如果您不想在上面花费太多时间,请向 DiscoverRunner 添加一行代码以打印它发现的每个测试。您可以保存输出。