2015-06-10 3 views
1

Как выполнить функции настройки и разборки один раз для всех тестов носетестов?Функции настройки и разблокировки, выполняемые один раз для всех тестов носететов

def common_setup(): 
    #time consuming code 
    pass 

def common_teardown(): 
    #tidy up 
    pass 

def test_1(): 
    pass 

def test_2(): 
    pass 

#desired behavior 
common_setup() 
test_1() 
test_2() 
common_teardown() 

Обратите внимание, что существует similar question с ответом, который не работает с питоном 2.7.9-1, питон-unittest2 0.5.1-1 и питон-нос 1.3.6-1 после замены точек с pass и добавление строки import unittest. К сожалению, моя репутация слишком низкая, чтобы прокомментировать это.

ответ

2

У вас может быть функция установки уровня модуля. В соответствии с nose documentation:

Испытательные модули предлагают установку и разборку на уровне модуля; определить метод установки, setup_module, пусконаладку или setUpModule для установки, демонтажа, teardown_module или tearDownModule для демонтажа.

Таким образом, более конкретно, для вашего случая:

def setup_module(): 
    print "common_setup" 

def teardown_module(): 
    print "common_teardown" 

def test_1(): 
    print "test_1" 

def test_2(): 
    print "test_2" 

Запуск тест дает вам:

$ nosetests common_setup_test.py -s -v 
common_setup 
common_setup_test.test_1 ... test_1 
ok 
common_setup_test.test_2 ... test_2 
ok 
common_teardown 

---------------------------------------------------------------------- 
Ran 2 tests in 0.000s 

OK 

Это не имеет значения, имя вы не выбрали, так как setup и setup_module будет работать то же самое, но setup_module имеет большую ясность.

+0

Спасибо за ваше предложение. Извините, мое описание было недостаточно ясным. Функции setup() и teardown() должны вызываться только один раз для всех тестов. Я отредактировал свой вопрос, чтобы прояснить эту проблему. – gizzmole

+0

Изменен ответ, чтобы отразить комментарий. – Oleksiy