2013-05-25 2 views
1

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

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 указываются в Пастер ини файла мое заявление. Есть ли простой способ использовать мой development.ini при запуске моего тестового кода? Я еще не понял, как/когда файл ini загружается во время запуска пирамиды, поэтому сложно определить, где его загрузить во время тестирования.

ответ

3

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'))