Pregunta

I would like to write doctests for my pyramid web app, using the webtest module. I tried it like this:

from my_webapp import main
from webtest import TestApp

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

This raises a KeyError (because some.url is not known) when my code reaches this line:

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

The value of some.url is specified in the paster ini file of my application. Is there a simple way to use my development.ini when running my test code? I did not yet fully understand how/when the ini file is loaded during pyramid start up, so it's hard to figure out where to load it while testing.

¿Fue útil?

Solución

main is invoked with the contents of your ini file. A simple way to load your app from an ini is:

from pyramid.paster import get_app

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

This expects "testing.ini" to be in the current working directory, so you may need to tweak that. If you'd like it to be relative to a spot in your tree you can use:

import os.path
import some_module

here = os.path.dirname(some_module.__file__)
app = get_app(os.path.join(here, 'testing.ini'))
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top