setUp(registry=None, request=None, hook_zca=True, autocommit=True, settings=None, package=None)[source]

Set Pyramid registry and request thread locals for the duration of a single unit test.

Use this function in the setUp method of a unittest test case which directly or indirectly uses:

If you use the get_current_* functions (or call Pyramid code that uses these functions) without calling setUp, pyramid.threadlocal.get_current_registry() will return a global application registry, which may cause unit tests to not be isolated with respect to registrations they perform.

If the registry argument is None, a new empty application registry will be created (an instance of the pyramid.registry.Registry class). If the registry argument is not None, the value passed in should be an instance of the pyramid.registry.Registry class or a suitable testing analogue.

After setUp is finished, the registry returned by the pyramid.threadlocal.get_current_registry() function will be the passed (or constructed) registry until pyramid.testing.tearDown() is called (or pyramid.testing.setUp() is called again) .

If the hook_zca argument is True, setUp will attempt to perform the operation zope.component.getSiteManager.sethook( pyramid.threadlocal.get_current_registry), which will cause the Zope Component Architecture global API (e.g. zope.component.getSiteManager(), zope.component.getAdapter(), and so on) to use the registry constructed by setUp as the value it returns from zope.component.getSiteManager(). If the zope.component package cannot be imported, or if hook_zca is False, the hook will not be set.

If settings is not None, it must be a dictionary representing the values passed to a Configurator as its settings= argument.

If package is None it will be set to the caller's package. The package setting in the pyramid.config.Configurator will affect any relative imports made via pyramid.config.Configurator.include() or pyramid.config.Configurator.maybe_dotted().

This function returns an instance of the pyramid.config.Configurator class, which can be used for further configuration to set up an environment suitable for a unit or integration test. The registry attribute attached to the Configurator instance represents the 'current' application registry; the same registry will be returned by pyramid.threadlocal.get_current_registry() during the execution of the test.


Undo the effects of pyramid.testing.setUp(). Use this function in the tearDown method of a unit test that uses pyramid.testing.setUp() in its setUp method.

If the unhook_zca argument is True (the default), call zope.component.getSiteManager.reset(). This undoes the action of pyramid.testing.setUp() when called with the argument hook_zca=True. If zope.component cannot be imported, unhook_zca is set to False.

testConfig(registry=None, request=None, hook_zca=True, autocommit=True, settings=None)[source]

Returns a context manager for test set up.

This context manager calls pyramid.testing.setUp() when entering and pyramid.testing.tearDown() when exiting.

All arguments are passed directly to pyramid.testing.setUp(). If the ZCA is hooked, it will always be un-hooked in tearDown.

This context manager allows you to write test code like this:

with testConfig() as config:
    config.add_route('bar', '/bar/{id}')
    req = DummyRequest()
    resp = myview(req)
cleanUp(*arg, **kw)[source]

An alias for pyramid.testing.setUp().

class DummyResource(__name__=None, __parent__=None, __provides__=None, **kw)[source]

A dummy Pyramid resource object.

clone(__name__=<object object>, __parent__=<object object>, **kw)[source]

Create a clone of the resource object. If __name__ or __parent__ arguments are passed, use these values to override the existing __name__ or __parent__ of the resource. If any extra keyword args are passed in via the kw argument, use these keywords to add to or override existing resource keywords (attributes).


Return the items set by __setitem__


Return the keys set by __setitem__


Return the values set by __setitem__

class DummyRequest(params=None, environ=None, headers=None, path='/', cookies=None, post=None, accept=None, **kw)[source]

A DummyRequest object (incompletely) imitates a request object.

The params, environ, headers, path, and cookies arguments correspond to their WebOb equivalents.

The post argument, if passed, populates the request's POST attribute, but not params, in order to allow testing that the app accepts data for a given view only from POST requests. This argument also sets self.method to "POST".

Extra keyword arguments are assigned as attributes of the request itself.

Note that DummyRequest does not have complete fidelity with a "real" request. For example, by default, the DummyRequest GET and POST attributes are of type dict, unlike a normal Request's GET and POST, which are of type MultiDict. If your code uses the features of MultiDict, you should either use a real pyramid.request.Request or adapt your DummyRequest by replacing the attributes with MultiDict instances.

Other similar incompatibilities exist. If you need all the features of a Request, use the pyramid.request.Request class itself rather than this class while writing tests.

request_iface = <InterfaceClass pyramid.interfaces.IRequest>
class DummyTemplateRenderer(string_response='')[source]

An instance of this class is returned from pyramid.config.Configurator.testing_add_renderer(). It has a helper function (assert_) that makes it possible to make an assertion which compares data passed to the renderer by the view function against expected key/value pairs.


Accept an arbitrary set of assertion key/value pairs. For each assertion key/value pair assert that the renderer (eg. pyramid.renderers.render_to_response()) received the key with a value that equals the asserted value. If the renderer did not receive the key at all, or the value received by the renderer doesn't match the assertion value, raise an AssertionError.