Как запустить unittest.TestSuite () в Python с флагом -v? - PullRequest
0 голосов
/ 28 марта 2019

Я использую:

Мне известно, что nose или py.test предоставляют гораздо больше возможностей, чем обычный unittest. Однако цель здесь - придерживаться текущей среды.


Мой suite.py файл, который находится в каталоге /tests, выглядит следующим образом:

import unittest

loader = unittest.TestLoader()
suite = loader.discover('.')

runner = unittest.TextTestRunner()
runner.run(suite)

Я запускаю его (из корня проекта) следующим образом:

python -m unittest tests/suite.py

Это запускает все TestCase s из каталога /tests и производит вывод (в консоли), как это:

......ss....s............s.....s.s....s.....................s....ss.....s......s......s..........s...........s.....s.....s....s
----------------------------------------------------------------------
Ran 117 tests in 54.110s

OK (skipped=13)

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK

Вопросы:

  1. Что за вторая часть вывода

    ----------------------------------------------------------------------
    Ran 0 tests in 0.000s
    
    OK
    

    то есть имеется в виду (и почему это так)?

  2. Как получить подробный вывод при запуске комплекта (т.е. статус каждого теста, такой же, как при запуске python -m unittest -v из корня проекта)? Я пробовал python -m unittest -v tests/suite.py, но это не сработало.

1 Ответ

0 голосов
/ 29 марта 2019

Ну, как это иногда случается , я выяснил ответ на свой вопрос. Это был ответ на другой вопрос , на самом деле, это дало мне представление о том, чтоЯ пропал без вести.


Ответы, которые я обнаружил:

  1. Вторая часть вывода консоли:

    ----------------------------------------------------------------------
    Ran 0 tests in 0.000s
    
    OK
    

    isссылаясь на тесты в текущем модуле (т.е. файл, который был запущен), в данном случае - suite.py.Поскольку сам файл не содержит TestCase s, следовательно, выходные данные являются «пустыми» (это легко проверить: создайте пустой файл test.py, затем запустите его как python -m unittest tests/test.py - вы увидите точно такой же вывод, как и выше).

  2. Чтобы получить подробный вывод из прогона TestSuite - создание TestSuite должно быть заключено в метод (который возвращает созданный TestSuite), а затемне модуль, а метод должен быть передан python -m unittest -v.Таким образом, suite.py должен быть изменен на:

    import unittest
    
    def suite():
        loader = unittest.TestLoader()
        suite = loader.discover('.')
        return suite
    

    И затем он должен быть запущен через python -m unittest -v tests.suite.suite, это дает подробный статус каждого теста и позволяет избежать ненужных выводов ... Ran 0 tests in 0.000s ....

...