nose.run возвращает пустой файл при использовании с аргументами xunit - PullRequest
0 голосов
/ 11 мая 2018

Я использую нос для запуска моих тестов следующим образом

import nose
import unittest

if __name__ == "__main__":
    test_cases = unittest.TestLoader().discover(<path_to_test_files>)
    suite = unittest.TestSuite([test_cases])
    xunit_report = True
    log_file = 'my_report.xml'
    arguments = ["nosetest",'--verbosity=2']
    if xunit_report:
        arguments += ['--with-xunit', '--xunit-file', log_file]
    nose.run(suite=suite, argv=arguments)

Переменная suite обновляется со всеми обнаруженными тестовыми случаями.Журнал консоли также подтверждает, что все тесты были выполнены.Однако файл результатов xml всегда содержит

<?xml version="1.0" encoding="UTF-8"?><testsuite name="nosetests" tests="0" errors="0" failures="0" skip="0"></testsuite>

Am на Python 2.7.14.

Что мне нужно изменить, чтобы получить фактические результаты в моем XML-файле?

1 Ответ

0 голосов
/ 11 мая 2018

Если вы измените вызов discover() для предоставления пути, например . для текущего каталога:

test_cases = unittest.TestLoader().discover('.')

Тогда загрузчик найдет файлы в рабочем каталоге, который вы выполняетеСценарий из которого соответствует шаблону 'test*.py'.Если я добавлю ваш скрипт в файл run.py, а рядом с ним тест в файле с именем test_example.py со следующим тестом UnitTest:

import unittest

class TestStringMethods(unittest.TestCase):

    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')

Тогда выходной xml-файл содержит ожидаемыйрезультаты теста.

Итак: убедитесь, что вы запускаете скрипт из того же каталога, в котором находятся ваши тесты (или что вы меняете .discover('.') на любой каталог, в котором находятся ваши тесты, и что ваши тестовые файлы соответствуют test*.pypattern.

Также обратите внимание, что у nose.run(..) есть аргумент только для имени модуля, чтобы найти тесты, которые могут оказаться полезными:

nose.run(module=".")
...