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