为金字塔网络应用编写doctests,这取决于ini文件中的设置

时间:2013-05-25 14:55:05

标签: python pyramid wsgi webtest

我想使用webtest模块为我的金字塔网络应用编写doctests。我试过这样的话:

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的值在我的应用程序的paster ini文件中指定。在运行我的测试代码时,有一种简单的方法可以使用我的development.ini吗?我还没有完全理解在金字塔启动期间如何/何时加载ini文件,因此在测试时很难确定加载它的位置。

1 个答案:

答案 0 :(得分:3)

使用ini文件的内容调用

main。从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'))