Python unittest не запускает тесты - PullRequest
0 голосов
/ 25 августа 2018

Я сделал небольшой проект, который называется demo, с одним тестом

import unittest


class Test(unittest.TestCase):


    def testName1(self):
        self.assertEqual(5+9, 14)


if __name__ == "__main__":
    #import sys;sys.argv = ['', 'Test.testName']
    unittest.main()

Однако из командной строки

ThinkPad-T520:~/workspacep/demo$ python -m unittest

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

OK

Почему это не работает? В общем, как я могу запустить все модульные тесты из командной строки в одну строку?

Структура каталога

demo
    tests
          demo_test1.py  __init__.py

Ответы [ 4 ]

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

Есть три готки, о которых я знаю:

  1. Ваши тесты в ваших тестовых случаях должны называться test_*
  2. Ваши тестовые файлы должны иметь имя: test*.py (по умолчанию вы можете изменить его с флагом -p при запуске тестов). например test_demo1.py
  3. В вашей папке tests должен быть файл __init__.py, иначе она не будет считаться допустимым местом для импорта.

Итак, для # 1 вам нужно переименовать тест в test_name_1. А для # 2 есть два варианта:

A - Реструктурируйте ваши файлы так:

demo
    tests
        __init__.py
        test_demo1.py

Затем запустите python -m unittest, и он должен найти контрольные примеры.

B - Просто запустите его как: python -m unittest discover -p *test.py

0 голосов
/ 25 августа 2018

Некоторое время назад я боролся с той же самой проблемой и решил ее с помощью команды test discovery.

python -m unittest discover -s .

Вы можете передать свой тестовый файл, а также целый ряд других опций https://docs.python.org/2/library/unittest.html#test-discovery

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

Для меня (запуск тестов от Intellij) мне пришлось удалить класс «Выполнить настройку». Ранее я ошибочно импортировал unittest как _pytest.unittest и запустил тестовый класс. Конечно, это не сработало. Я исправил импорт модуля, но «рабочая конфигурация» все еще была там, заставляя его работать как скрипт Python, а не как «тесты Python».

0 голосов
/ 25 августа 2018

Вам необходимо передать в список модулей .

Например, если ваш тестовый файл foo.py, вы можете запустить python -m unittest foo.

...