Выполнение фоновый сервис , когда у Вас нет доступа к ОС сервера (как имеет место в общей среде хостинга).
Используйте множественное наследование, чтобы ваш класс с общими тестами сам не наследовал от 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()
Измените имя метода 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 ()
Метод, вызываемый подготовить тестовое приспособление. Это позвонил непосредственно перед вызовом Метод испытания; любое исключение, вызванное этот метод будет считаться ошибка, а не провал теста. В реализация по умолчанию ничего не делает.
Чего вы пытаетесь достичь? Если у вас есть общий тестовый код (утверждения, шаблонные тесты и т. Д.), Поместите их в методы без префикса 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()