Я хотел бы добавить пару вещей к тому, что unittest.TestCase
класс делает после инициализации, но я не могу понять, как это сделать.
Прямо сейчас делаю вот что:
#filename test.py
class TestingClass(unittest.TestCase):
def __init__(self):
self.gen_stubs()
def gen_stubs(self):
# Create a couple of tempfiles/dirs etc etc.
self.tempdir = tempfile.mkdtemp()
# more stuff here
Я бы хотел, чтобы все заглушки были сгенерированы только один раз для всего этого набора тестов. Я не могу использовать, setUpClass()
потому что работаю над Python 2.4 (я также не смог заставить это работать на Python 2.7).
Что я здесь делаю не так?
Я получаю такую ошибку:
`TypeError: __init__() takes 1 argument (2 given)`
... и другие ошибки, когда я перемещаю весь код заглушки, __init__
когда запускаю его с помощью команды python -m unittest -v test
.
python
unit-testing
ffledgling
источник
источник
Ответы:
Попробуй это:
Вы переопределяете
TestCase
's__init__
, поэтому вы можете позволить базовому классу обрабатывать аргументы за вас.источник
setUp
а не отменять__init__
?unittest.TestCase.__init__(self,*args,**kwargs)
вместоsuper(TestingClass, self).__init__(*args, **kwargs)
Просто хотел добавить некоторые пояснения по поводу переопределения функции инициализации
Функция будет вызываться перед каждым методом в вашем тестовом классе. Обратите внимание, что если вы хотите добавить некоторые дорогостоящие вычисления, которые следует выполнить один раз перед запуском всех методов тестирования, используйте метод класса SetUpClass.
Эта функция будет вызываться один раз перед всеми тестовыми методами класса. См.
setUp
Метод, который вызывается перед каждым методом тестирования.источник
Установите unittest2 и используйте unittest из этого пакета.
а затем используйте класс setupModule / tearDownModule или setupClass / tearDown для специальной логики инициализации
Дополнительная информация: http://www.voidspace.org.uk/python/articles/unittest2.shtml
Также, скорее всего, вы создаете интеграционный тест больше, чем unittest. Выберите хорошее название для тестов, чтобы различать их, или поместите в другой контейнерный модуль.
источник