首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么Django TEST_RUNNER支持xunit和日志捕获?

什么Django TEST_RUNNER支持xunit和日志捕获?
EN

Stack Overflow用户
提问于 2017-10-02 18:57:22
回答 3查看 4.6K关注 0票数 10

我正在尝试设置一个新的django项目,并将TEST_RUNNERsettings.py中配置为django_nose.NoseTestSuiteRunner

我选择了这个测试运行程序,因为它似乎是我能找到的唯一具有以下特性的测试运行程序:

  • 编写xunit xml测试报告
  • 捕获日志记录/stdout,并且只显示失败的测试。

然而,我听说鼻子没有保养,我很难找到合适的替代品。标准的测试运行程序不会捕获日志,也不会按照我的判断编写xunit (希望被证明是错误的!)

我做的测试如下:

代码语言:javascript
复制
python -m coverage run manage.py test --noinput
python -m coverage report --include="app/*" --show-missing --fail-under=100
python -m coverage xml --include="app/*" -o ./reports/coverage.xml

在settings.py中这样做:

代码语言:javascript
复制
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'

这个setup.cfg:

代码语言:javascript
复制
[nosetests]
verbosity=0
with-xunit=1
xunit-file=./reports/xunit.xml
logging-clear-handlers=1

最后两行是我在其他测试运行程序中似乎找不到的真正多汁的部分。鼻子捕获日志并清除其他日志处理程序(例如,转储到stdout上的处理程序),因此测试运行的输出要干净得多(您只看到失败测试的日志记录)。

在其他非django项目中,我通常使用nose2,但是django-nose2项目似乎已有6年历史,缺乏python3支持??

请让我知道哪个测试运行是“推荐的”一个(例如,最流行的)与django支持,谢谢。

EN

回答 3

Stack Overflow用户

发布于 2019-02-06 07:50:45

我在unittest-xml-reporting方面取得了成功。

代码语言:javascript
复制
TEST_RUNNER = 'xmlrunner.extra.djangotestrunner.XMLTestRunner'

https://github.com/xmlrunner/unittest-xml-reporting#django-support

可以使用TEST_OUTPUT_DIR设置配置输出目录。

票数 10
EN

Stack Overflow用户

发布于 2019-06-19 12:55:13

您仍然可以使用鼻跑:

代码语言:javascript
复制
INSTALLED_APPS += ['django_nose']
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
NOSE_ARGS = [
    '--with-xunit',
    '--xunit-file=nosetests.xml',
    '--with-coverage',
    '--cover-erase',
    '--cover-xml',
    '--cover-xml-file=nosecover.xml',
]
票数 5
EN

Stack Overflow用户

发布于 2017-10-02 20:42:53

因此,pytest产生了一些非常好的测试输出。我在TEST_RUNNER中取消了settings.py,并将测试脚本更改为:

代码语言:javascript
复制
python -m coverage run -m pytest --junitxml=./reports/junit.xml
python -m coverage report --include="app/*" --show-missing --fail-under=100
python -m coverage xml --include="app/*" -o ./reports/coverage.xml

这是可行的,并捕获了所有日志输出(鼻子有一点错误,让一两个日志语句通过,非常奇怪的行为)。

唯一的原因是我是一个django新手,所以我不知道不使用manage.py test测试django是否有任何不良的副作用。非常感谢您的指导,谢谢!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46531947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档