Модульный тест Python с основой и sub классом

Выполнение фоновый сервис , когда у Вас нет доступа к ОС сервера (как имеет место в общей среде хостинга).

137
задан Thierry Lam 24 August 2009 в 16:48
поделиться

3 ответа

Используйте множественное наследование, чтобы ваш класс с общими тестами сам не наследовал от TestCase.

import unittest

class CommonTests(object):
    def testCommon(self):
        print 'Calling BaseTest:testCommon'
        value = 5
        self.assertEquals(value, 5)

class SubTest1(unittest.TestCase, CommonTests):

    def testSub1(self):
        print 'Calling SubTest1:testSub1'
        sub = 3
        self.assertEquals(sub, 3)


class SubTest2(unittest.TestCase, CommonTests):

    def testSub2(self):
        print 'Calling SubTest2:testSub2'
        sub = 4
        self.assertEquals(sub, 4)

if __name__ == '__main__':
    unittest.main()
147
ответ дан 23 November 2019 в 23:31
поделиться

Измените имя метода BaseTest на setUp:

class BaseTest(unittest.TestCase):
    def setUp(self):
        print 'Calling BaseTest:testCommon'
        value = 5
        self.assertEquals(value, 5)


class SubTest1(BaseTest):
    def testSub1(self):
        print 'Calling SubTest1:testSub1'
        sub = 3
        self.assertEquals(sub, 3)


class SubTest2(BaseTest):
    def testSub2(self):
        print 'Calling SubTest2:testSub2'
        sub = 4
        self.assertEquals(sub, 4)

Вывод:

Выполните 2 теста за 0,000 с

Вызов BaseTest: testCommon Calling
Подтест1: вызов testSub1
BaseTest: testCommon Calling
SubTest2: testSub2

Из документации :

TestCase.setUp ()
Метод, вызываемый подготовить тестовое приспособление. Это позвонил непосредственно перед вызовом Метод испытания; любое исключение, вызванное этот метод будет считаться ошибка, а не провал теста. В реализация по умолчанию ничего не делает.

-2
ответ дан 23 November 2019 в 23:31
поделиться

Чего вы пытаетесь достичь? Если у вас есть общий тестовый код (утверждения, шаблонные тесты и т. Д.), Поместите их в методы без префикса test , чтобы unittest не загружал их.

import unittest

class CommonTests(unittest.TestCase):
      def common_assertion(self, foo, bar, baz):
          # whatever common code
          self.assertEqual(foo(bar), baz)

class BaseTest(CommonTests):

    def testCommon(self):
        print 'Calling BaseTest:testCommon'
        value = 5
        self.assertEquals(value, 5)

class SubTest1(CommonTests):

    def testSub1(self):
        print 'Calling SubTest1:testSub1'
        sub = 3
        self.assertEquals(sub, 3)

class SubTest2(CommonTests):

    def testSub2(self):
        print 'Calling SubTest2:testSub2'
        sub = 4
        self.assertEquals(sub, 4)

if __name__ == '__main__':
    unittest.main()
7
ответ дан 23 November 2019 в 23:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: