Нос @with_test не работает

У меня есть ситуация, когда для некоторых тестов мне требуется использовать метод настройки, отличный от того, который я определил для всех, и для этого я использую декоратор носа @with_setup.

Однако это, похоже, не работает.

код:

import unittest
from nose.tools.nontrivial import with_setup
__author__ = 'gaurang_shah1'

class Demo(unittest.TestCase):

    def setup_func(self):
        print "setup_func"

    def teardown_func(self):
        print "teardown function"

    def setUp(self):
        print "setup"

    @with_setup(setup_func, teardown_func)
    def test_setup(self):
        print "test setup"

Я ожидаю следующий вывод:
setup_func
test setup
teardown_func

Однако я получаю следующий вывод, есть ли что-то неправильное, что я здесь делаю.
настройка
тестовая настройка


person Gaurang    schedule 30.09.2014    source источник


Ответы (1)


Вы создаете подкласс unittest, и поэтому он всегда будет использовать методы unittest.setUp и tearDown для теста. Как описано в документации:

Обратите внимание, что with_setup полезен только для тестовых функций, не для тестовых методов или внутри подклассов TestCase.

Если вы хотите использовать @with_setup, отбросьте весь класс:

from nose.tools.nontrivial import with_setup

def setup_func():
    print "setup_func"

def teardown_func():
    print "teardown function"

@with_setup(setup_func, teardown_func)
def test_something():
    print "test"

Или, что еще лучше, создайте еще один класс unittest, который выполняет вашу пользовательскую функцию setUp.

person Oleksiy    schedule 30.09.2014
comment
Вы можете просто вызвать setup_func() из тестового метода при запуске, если хотите. - person Oleksiy; 02.10.2014