netch80: (bird)
netch80 ([personal profile] netch80) wrote2014-10-10 12:35 pm

python unittest и setUp для группы

Диагностика одного сложного "какого хрена?" завершилась осознанием того, что если в классе для питонового unittest есть несколько тестов, и какие-то тесты падают, то управляющий слой создаёт по классу на тест, вызывает setUp() у них по очереди, накапливает объекты, и только потом у упавших вызывает tearDown(). В варианте, когда по setUp() создаётся некий внешний сервер, который может быть один на запуск, это приводит к идиотскому конфликту на непонятном месте.

Формально всё вроде правильно, но по сути получается издевательство.

(Это не при "штатном" запуске, а при


    suite = unittest.TestLoader().loadTestsFromTestCase(BackendTest)
    unittest.TextTestRunner(verbosity = 2).run(suite)


не знаю, насколько зависит от этого.)
ext_605364: geg MOPO4 (Default)

[identity profile] gegmopo4.livejournal.com 2014-10-10 03:45 pm (UTC)(link)
Не воспроизводится.
import unittest

class BackendTest(unittest.TestCase):
    def setUp(self):
        print('setUp')

    def tearDown(self):
        print('tearDown')

    def test1(self):
        print('test1')
        self.fail('fail')

    def test2(self):
        print('test2')

suite = unittest.TestLoader().loadTestsFromTestCase(BackendTest)
unittest.TextTestRunner(verbosity = 2).run(suite)