File: testing.py

package info (click to toggle)
python-pecan 1.1.2-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 1,268 kB
  • ctags: 2,123
  • sloc: python: 10,456; makefile: 150; sh: 46
file content (50 lines) | stat: -rw-r--r-- 1,619 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import os
from pecan import load_app
from webtest import TestApp


def load_test_app(config=None, **kwargs):
    """
    Used for functional tests where you need to test your
    literal application and its integration with the framework.

    :param config: Can be a dictionary containing configuration, a string which
                    represents a (relative) configuration filename or ``None``
                    which will fallback to get the ``PECAN_CONFIG`` env
                    variable.

    returns a pecan.Pecan WSGI application wrapped in a webtest.TestApp
    instance.

    ::
        app = load_test_app('path/to/some/config.py')

        resp = app.get('/path/to/some/resource').status_int
        assert resp.status_int == 200

        resp = app.post('/path/to/some/resource', params={'param': 'value'})
        assert resp.status_int == 302

    Alternatively you could call ``load_test_app`` with no parameters if the
    environment variable is set ::

        app = load_test_app()

        resp = app.get('/path/to/some/resource').status_int
        assert resp.status_int == 200
    """
    return TestApp(load_app(config, **kwargs))


def reset_global_config():
    """
    When tests alter application configurations they can get sticky and pollute
    other tests that might rely on a pristine configuration. This helper will
    reset the config by overwriting it with ``pecan.configuration.DEFAULT``.
    """
    from pecan import configuration
    configuration.set_config(
        dict(configuration.initconf()),
        overwrite=True
    )
    os.environ.pop('PECAN_CONFIG', None)