Nosetests.exe вызывает setup_class(), но модульные тесты pycharm не

Я пытаюсь портировать SqlSoup на python 3. Я использую PyCharm в качестве своей IDE и хочу для запуска модульных тестов.

Если я запускаю модульные тесты в pycharm, я получаю следующий вывод:

C:\bin\python\python.exe "C:\Program Files (x86)\JetBrains\PyCharm Community Edition 4.0.3\helpers\pycharm\utrunner.py" C:\Users\jdearing\Documents\deleteme\sqlsoup\tests\test_sqlsoup.py true
Testing started at 12:53 PM ...

Error
Traceback (most recent call last):
  File "C:\Users\jdearing\Documents\deleteme\sqlsoup\tests\test_sqlsoup.py", line 25, in setUp
    engine.execute(sql)
NameError: name 'engine' is not defined

Однако, если я запускаю тесты из командной строки, все работает отлично:

C:\Users\jdearing\Documents\deleteme\sqlsoup>c:\bin\python\Scripts\nosetests-3.4.exe tests\test_sqlsoup.py
.............................
----------------------------------------------------------------------
Ran 29 tests in 0.549s

OK

Что сводится к тому, что этот метод никогда не вызывается:

    @classmethod
    def setup_class(cls):
        global engine
        engine = create_engine('sqlite://', echo=True)
        for sql in _ddl:
            engine.execute(sql)

Да, это глобальная переменная, я улучшу модульные тесты после того, как запущу их.

Pycharm попросил меня установить нос, чтобы удовлетворить зависимость, поэтому я предполагаю, что его тестовый бегун использует этот модуль, а не другой. Почему он дает разные результаты?


person Justin Dearing    schedule 08.01.2015    source источник


Ответы (1)


Насколько я знаю, для носа настройка должна быть в следующем формате, чтобы нос подхватывал и запускал в начале тестового класса:

@classmethod 
def setUpClass(cls):
    global engine
    ...
person user4496541    schedule 26.01.2015