Написание doctests для веб-приложения пирамиды, которые зависят от настроек в ini-файле

Я хотел бы написать doctests для своего веб-приложения пирамиды, используя модуль webtest. Я пробовал это так:

from my_webapp import main
from webtest import TestApp

app = TestApp(main({}))
result = app.get('/')

Это вызывает KeyError (потому что some.url неизвестно), когда мой код достигает этой строки:

url = request.registry.settings['some.url']

Значение some.url указано в ini-файле вставки моего приложения. Есть ли простой способ использовать мой development.ini при запуске моего тестового кода? Я еще не до конца понял, как/когда загружается ini-файл при запуске пирамиды, поэтому сложно понять, куда его загружать при тестировании.


person Achim    schedule 25.05.2013    source источник


Ответы (1)


main вызывается с содержимым вашего ini-файла. Простой способ загрузить ваше приложение из ini:

from pyramid.paster import get_app

app = get_app('testing.ini#main')
test_app = TestApp(app)

Это предполагает, что «testing.ini» находится в текущем рабочем каталоге, поэтому вам может потребоваться настроить его. Если вы хотите, чтобы это было относительно места в вашем дереве, вы можете использовать:

import os.path
import some_module

here = os.path.dirname(some_module.__file__)
app = get_app(os.path.join(here, 'testing.ini'))
person Michael Merickel    schedule 25.05.2013