Как написать тестовый набор для носа
Если я хочу написать модульный тест, я просто добавляю файл в свой test/
подкаталог с моим наследием тестового класса от unittest.TestCase
,
Теперь я хочу использовать такой шаблон для набора тестов: у меня есть файл Python в test/
с классом (расширение unittest.TestSuite
), который читает файл и генерирует тест из него. У меня уже есть код для разбора файла и создания TestCase из них.
Но нос не обнаруживает этот класс. Как мне узнать об этом файле и сгенерировать из него тесты?
1 ответ
Вы не указываете версию Python, которую вы используете. С Python 2.7+ вы можете определить load_tests
функция в вашем модуле, которая будет вызываться для создания TestSuite для модуля.
Однако, нос игнорирует протокол load_tests. Если у вас есть nose2, он имеет плагин для протокола нагрузочных тестов.
В противном случае вы создаете пустую TestCase
и заполнить сгенерированными тестовыми функциями. Например:
import unittest
data = ["a", "b", "c"] # or from whatever source you want
class GeneratedTests(unittest.TestCase):
def setUp(self):
self.correct = "b"
def setup_module():
for i, d in enumerate(data):
test_driver = create_driver(d)
name ="test_generated{}".format(i)
setattr(GeneratedTests, name, test_driver)
def create_driver(d):
def test_driver(self):
self.assertEqual(d, self.correct)
return test_driver
setup_module()
Последний способ сделать это - использовать контекстный менеджер подтестов. Это доступно только в версии 3.4+. Тем не менее, вы можете найти замену бедного человека здесь. Надеюсь, это поможет вам структурировать сгенерированные тесты в более удобочитаемой форме.