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 ме помоли да инсталирам nose, за да удовлетворя зависимостта, така че бих предположил, че неговият тестов производител използва този модул, а не друг. Защо дава различни резултати?


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


Отговори (1)


Доколкото знам за носа, настройката трябва да бъде в следния формат, за да може носът да се вземе и стартира в началото на тестовия клас:

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