我试图建立一个新的Django项目,我已经配置TEST_RUNNER
settings.py
是django_nose.NoseTestSuiteRunner
。
我选择了这个测试运行,因为它似乎是唯一一个我能找到具有以下特点:
不过我听说鼻子是无人维护和我有一个很难找到一个合适的替代者。标准测试运行没有捕获记录,也没有写的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的支持,谢谢。
您仍然可以使用鼻亚军:
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',
]
所以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的任何不良副作用。任何指导的感激,谢谢!
我曾与单元测试,XML的报告成功:
TEST_RUNNER = 'xmlrunner.extra.djangotestrunner.XMLTestRunner'