Как запустить тестовые модули Python для нескольких реализаций за один раз - PullRequest
1 голос
/ 14 октября 2011

У меня проблемы с поиском правильного способа использования pythons unittest framework

В настоящее время у меня есть 3 различные реализации для класса структуры данных и юнит-тесты для тестирования различных вещей в классе следующим образом:

import fooHorse
import fooSnake
import fooMoose
import unittest

foo = fooHorse.foo()
#foo = fooSnake.foo()
#foo = fooMoose.foo()

class testFoo(unittest.TestCase):
    def testSomething(self):
        foo.do_something()
    ...
    def testSomethingelse(self):
        ...
    # etc

if __name__ == "__main__":
    unittest.main()

Как выполнить рефакторинг кода, чтобы все тесты выполнялись для fooSnake.foo, fooMoose.foo и fooHorse.foo?

Ответы [ 2 ]

2 голосов
/ 14 октября 2011

Просто сгруппируйте все тесты в функцию и вызовите ее из трех тестов:

class testFoo(unittest.TestCase):
    def _doTest(self, foo):
         foo.do_something()
         # ...

    def testFoorHorse(self):
        foo = fooHorse.foo()
        self._doTest(foo)
    # and so on.

Я бы не стал делать что-то более умное, чтобы логика теста оставалась простой, чтобы быть явно ошибочной-бесплатно.

0 голосов
/ 14 октября 2011

Я думаю, что лучше держать код тестирования внутри тестируемых классов (то есть внутри классов fooHorse и т. Д.).Я не могу точно сказать из сегмента кода, так что, возможно, вы уже делаете это.Затем, чтобы объединить несколько тестов для одновременного запуска или выбрать несколько из них, вы можете создать отдельный класс тестирования, который создает набор тестов.Там могут быть назначены отдельные юнит-тесты.Подробности см. В документах Python .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...