2015-11-17 4 views
1

Я пытаюсь настроить приложение для пирамиды, чтобы использовать как веб-тест, так и sqlalchemy. Если я прокомментирую код SQLAlchemy, веб-тесты работают без проблем.Пирамида не запускается, когда используются веб-тестер и sqlalchemy.

[Журнал Test] https://travis-ci.org/caffeinated-expert/frisbee/builds/91622436

Error 
Traceback (most recent call last): 
    File "frisbee/frisbee/tests/test_cities_page.py", line 18, in setUp 
    app = main({}) 
    File "frisbee/frisbee/__init__.py", line 15, in main 
    engine = engine_from_config(settings, 'sqlalchemy.') 
    File "build/bdist.macosx-10.10-x86_64/egg/sqlalchemy/engine/__init__.py", line 426, in engine_from_config 
    url = options.pop('url') 
KeyError: 'url' 

В моем файле основной INIT, если я закомментировать установку SQLAlchemy двигателя, то тесты работать нормально, но мне нужно SQLAlchemy для моего проекта.

Это первый раз, когда я использовал веб-тест, поэтому не уверен, что у меня есть другой конфликтный конфиг.

[В противном случае код] https://github.com/caffeinated-expert/frisbee/commit/ea759015de755aca1d7bffca2845b72944572bed

ответ

1

Из sqlaclhemy docs:

Единственный необходимый ключ (предполагается, что префикс по умолчанию) sqlalchemy.url

В файле test_cities_page.py вы звоните main с пустым словарем, предположительно для распаковки для **settings. Вам нужно добавить соответствующий параметр в словарь, который вы передаете функции, и он должен работать. :)

+0

Я попытался это и получить ту же ошибку \t SQLALCHEMY_URL = "SQLite: ///% (здесь) s/дб/frisbee.sqlite" \t приложение = главный ({ 'URL': SQLALCHEMY_URL}) или app = main ({'sqlalchemy.url': SQLALCHEMY_URL}) – casibbald

+1

Вы передаете что-либо в 'global_config'? Если вы еще не используете его, я бы назвал 'app = main (global_config = None, ** settings)'. – pl0x

+0

Cheers, что сработало удовольствие. Огромное спасибо. [Diff для тех, кому это интересно] https://github.com/caffeinated-expert/frisbee/compare/ea759015de75...f6edaaa3cdd8 – casibbald