Как правильно организовать юнит-тесты python в комплекты? - PullRequest
3 голосов
/ 19 ноября 2009

У меня есть несколько классов тестовых примеров, организованных в каталогах

foo_tests
    foo_tests1.py
    foo_tests2.py
    ...
bar_tests
    bar_tests1.py
    ...

Контрольные примеры выглядят так:

foo_tests1.py:
import unittest
class FooTestsOne(unittest.TestCase):
    def test_1():
       assert(1=1)
    def test_2():
       #...

Как вы организуете наборы тестов из подобных классов? В unittest есть средства для объектов TestLoaders и TestSuite, но где они объявлены и использованы? Я хочу определить определенные наборы в отдельном файле, с которым я могу запускать тесты:

suite1.py

import unittest
import foo_test1

suite = unittest.TestSuite((unittest.makeSuite(foo_tests1.FooTestsOne),
                            unittest.makeSuite(foo_tests2.FooTeststwo),
                             ))

if __name__ == "__main__":
    result = unittest.TextTestRunner(verbosity=2).run(suite())
    sys.exit(not result.wasSuccessful())

Но это не правильный способ объединять тесты в наборы. Когда я импортирую класс testcase («import foo_test1»), чтобы сослаться на него, чтобы я мог поместить его в больший набор, сразу запускаются внутренние тесты (во время импорта). Как правильно объединить тесты в наборы? Мне нужен точный контроль зерна в отношении того, какие тесты входят в какие наборы ... Я прочитал документацию TestSuite , но, похоже, она не дает много примеров ...

1 Ответ

3 голосов
/ 19 ноября 2009

Тесты не должны выполняться во время импорта. Может быть, у вас есть unittest.main() в нижней части foo_test1.py?

Ваш скрипт должен работать, за исключением того, что

result = unittest.TextTestRunner(verbosity=2).run(suite())

должно быть

result = unittest.TextTestRunner(verbosity=2).run(suite)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...