Python 3.7 Модульные тесты - PullRequest
       103

Python 3.7 Модульные тесты

0 голосов
/ 16 января 2020

Итак, я попробовал много вещей (из SO и больше), чтобы запустить мои тесты, но ничего не получилось, это мой текущий код:

test.py, который я вызов для запуска тестов: python3 ./src/preprocess/python/test.py import unittest

if __name__ == '__main__':
    testsuite = unittest.TestLoader().discover('.')
    unittest.TextTestRunner(verbosity=2).run(testsuite)

файл теста выглядит следующим образом:

import unittest
from scrapes.pdf import full_path_to_destination_txt_file

print(full_path_to_destination_txt_file)

class PreprocessingTest(unittest.TestCase):

    def path_txt_appending(self):
        self.assertEqual(full_path_to_destination_txt_file(
            "test", "/usr/test"), "/usr/test/test.txt")


if __name__ == '__main__':
    unittest.main(verbosity=2)

Но вывод всегда такой:

python3 ./src/preprocess/python/test.py

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

OK

Дополнительная информация:

  • Как видите, я звоню не из моего каталога root. Папка с тестами находится в ./src/preprocess/python/test/ и содержит __init__.py файл (есть также файл инициализации на уровне test.py)
  • для меня было бы хорошо, если бы мне пришлось кодировать все вызовы для всех тестов, которые я просто хочу завершить sh, это
  • automati c поиск с -t также не работает, поэтому я подумал, что более надежный метод здесь с test.py будет работать ...
  • использование этого фреймворка является обязательным требованием, которому я должен следовать
  • test_preprocessing.py находится в папке test, а from scrapes.pdf import full_path_to_destination_txt_file scrapes - папка модуля на том же уровне, что и test
  • Когда я вызываю одиночный модульный тест непосредственно в командной строке, он не выполняется из-за относительного импорта. Но использование test.py (очевидно) находит модули.

Что не так?

1 Ответ

2 голосов
/ 16 января 2020

По умолчанию unittest будет выполнять только те методы, имя которых начинается с test:

testMethodPrefix

Строка, содержащая префикс имен методов, который будет интерпретировать как методы испытаний. Значением по умолчанию является «тест». Это влияет на getTestCaseNames () и все методы loadTestsFrom * ().

из документов.

Либо измените этот атрибут, либо (желательно) добавьте префикс вашего метода имя с test_.

...