HotRunner是一个Django测试运行程序,具有一些有用的功能,比如排除应用程序和显示单个测试的运行时间。
django-hotrunner的Python项目详细描述
Hotrunner是一个改进的Django测试运行程序。
要安装HotRunner,pip install django-hotrunner。
要使用HotRunner,请在django中设置TEST_RUNNER = 'hotrunner.HotRunner'。 设置文件。这将启用三个有用的功能:
测试排除:当 你运行你的测试套件。您在 EXCLUDED_TEST_APPS设置。您可以覆盖此项而不删除 通过将TEST_ALL_APPS设置为真值,您的EXCLUDED_TEST_APPS。 django.contrib应用程序仍将不运行。要运行它们,请指定它们 在manage.py命令行中按名称: python manage.py test django.contrib.auth
copy-paste-friendly测试命名:Hotrunner现在用 可以复制和粘贴以重新运行该测试的名称。
测试计时:只需设置 你的冗长到2或更高。每次成功运行所需的时间 测试将以微秒粒度报告:
$ python manage.py test --verbosity=2 test_absolute_url (news.NewsModelAbsoluteURLTestCase.test_absolute_url) ... (0.106085s) ok test_empty_body_returns_empty_html (news.NewsModelMarkdownTestCase.test_empty_body_returns_empty_html) ... (0.000119s) ok test_markdown_saved_to_html (news.NewsModelMarkdownTestCase.test_markdown_saved_to_html) ... (0.009840s) ok test_unicode_markdown_converted_appropriately (news.NewsModelMarkdownTestCase.test_unicode_markdown_converted_appropriately) ... (0.000501s) ok test_unicode_strings_must_be_decoded (news.NewsModelMarkdownTestCase.test_unicode_strings_must_be_decoded) ... (0.000384s) ok test_basic_slug_creation (news.NewsModelSlugificationTestCase.test_basic_slug_creation) ... (0.000609s) ok test_existing_slugs_do_not_get_overridden (news.NewsModelSlugificationTestCase.test_existing_slugs_do_not_get_overridden) ... (0.000254s) ok test_getting_conflicting_slugs (news.NewsModelSlugificationTestCase.test_getting_conflicting_slugs) ... (0.001476s) ok test_slugifying_disambiguates_slugs (news.NewsModelSlugificationTestCase.test_slugifying_disambiguates_slugs) ... (0.000204s) ERROR
跳过的测试不会报告时间,因为信息不是 相关的。
xunit样式的xml输出。如果将HOTRUNNER_XUNIT_FILENAME设置为路径 对于可写文件,HotRunner会将测试结果的XML文档写入 那个档案。这使得您的项目很容易与集成,例如, 一份詹金斯的持续整合工作。例如,上面的测试套件 会是这样(减去漂亮的格式):
<testsuite errors="1" failures="0" name="Django Project Tests" skips="0" tests="9" time="0.121"> <testcase classname="news.tests.NewsModelAbsoluteURLTestCase" name="test_absolute_url" time="0.106085" /> <testcase classname="news.tests.NewsModelMarkdownTestCase" name="test_empty_body_returns_empty_html" time="0.000119" /> <testcase classname="news.tests.NewsModelMarkdownTestCase" name="test_markdown_saved_to_html" time="0.009840" /> <testcase classname="news.tests.NewsModelMarkdownTestCase" name="test_unicode_markdown_converted_appropriately" time="0.000501" /> <testcase classname="news.tests.NewsModelMarkdownTestCase" name="test_unicode_strings_must_be_decoded" time="0.000384" /> <testcase classname="news.tests.NewsModelSlugificationTestCase" name="test_basic_slug_creation" time="0.000609" /> <testcase classname="news.tests.NewsModelSlugificationTestCase" name="test_existing_slugs_do_not_get_overridden" time="0.000254" /> <testcase classname="news.tests.NewsModelSlugificationTestCase" name="test_getting_conflicting_slugs" time="0.001476" /> <testcase classname="news.tests.NewsModelSlugificationTestCase" name="test_slugifying_disambiguates_slugs" time="0.000204"> <error message="list index out of range" type="exceptions.IndexError">Traceback (most recent call last): File "/home/jcdyer/.virtualenvs/q2/local/lib/python2.7/site-packages/mock.py", line 1190, in patched return func(*args, **keywargs) File "/home/jcdyer/projects/q2/quantile2/news/tests.py", line 69, in test_slugifying_disambiguates_slugs news = news_items[n] IndexError: list index out of range </error> </testcase> </testsuite>
此功能以前通过django-jux项目提供。 如果您是从django-jux升级,则仍然可以使用旧设置 名称JUXD_FILENAME,但现在已弃用,可能会消失 在未来的某个时候。
依赖关系
HotRunner是为与Django集成而构建的,它可以替代Django的自定义 测试运行程序。它建立在unittest2中的功能之上,因此它只与 django 1.3或更高。
更改日志
0.2.4
- 已更新django测试运行程序导入,使其与1.8兼容。
0.2.3
- 修复了与 导致测试套件中断。
- 改进了详细测试套件运行的测试标识输出。
0.2.2
测试运行程序现在以允许复制粘贴的格式显示测试名称。
0.2.1
修复了为INSTALLED_APPS中指定为“package.app”的应用程序运行测试的问题。
0.2.0
添加了xunit样式的输出,如以前在django jux中实现的那样。
0.1.1
修复了在某些python版本上阻止使用^c正常中止测试的问题。
0.1.0
初次发布。功能应用程序排除和个别测试计时。