什么Django的TEST_RUNNER支持XML的xUnit和记录捕捉?

问题描述 投票:2回答:3

我试图建立一个新的Django项目,我已经配置TEST_RUNNER settings.pydjango_nose.NoseTestSuiteRunner

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

  • 写XML的xUnit测试报告
  • 捕获记录/标准输出和仅显示失败的测试。

不过我听说鼻子是无人维护和我有一个很难找到一个合适的替代者。标准测试运行没有捕获记录,也没有写的xUnit据我可以告诉(会喜欢被证明是错误的!)

我运行像这样的测试:

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:

TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'

这setup.cfg:

[nosetests]
verbosity=0
with-xunit=1
xunit-file=./reports/xunit.xml
logging-clear-handlers=1

最后两行是真正的多汁位,我似乎无法在其他测试运行找到。鼻子捕获记录,并清除其他日志处理程序(例如,转储在标准输出上的处理程序),使测试运行的输出更清洁(你只看到日志记录失败的测试)。

在其他非Django的项目,我通常使用nose2但Django的nose2项目似乎是6岁和缺乏python3支持?

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

django django-testing
3个回答
1
投票

您仍然可以使用鼻亚军:

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',
]

0
投票

所以pytest产生一些非常好的测试输出。我已经取消设置TEST_RUNNER settings.py中,改变了我的测试脚本:

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的任何不良副作用。任何指导的感激,谢谢!


0
投票

我曾与单元测试,XML的报告成功:

TEST_RUNNER = 'xmlrunner.extra.djangotestrunner.XMLTestRunner'

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

© www.soinside.com 2019 - 2024. All rights reserved.