summaryrefslogtreecommitdiff
path: root/docs/quick_tutorial/cookiecutters/tests/conftest.py
diff options
context:
space:
mode:
authorMichael Merickel <michael@merickel.org>2021-01-15 13:31:48 -0600
committerGitHub <noreply@github.com>2021-01-15 13:31:48 -0600
commit074f4f3eeec94b133293c0d1d0fa81d681b08e37 (patch)
tree2c0b41982a2298592a180887a924b67fa16d65e0 /docs/quick_tutorial/cookiecutters/tests/conftest.py
parent837358ee6be552fd2f990d1ed8d6ea9e1c98d583 (diff)
parentb0dd658429367dd5e3cd99973bcc9a6763dcc5e7 (diff)
downloadpyramid-074f4f3eeec94b133293c0d1d0fa81d681b08e37.tar.gz
pyramid-074f4f3eeec94b133293c0d1d0fa81d681b08e37.tar.bz2
pyramid-074f4f3eeec94b133293c0d1d0fa81d681b08e37.zip
Merge pull request #3648 from Pylons/prep-2.0-docs
More 2.0 docs prep
Diffstat (limited to 'docs/quick_tutorial/cookiecutters/tests/conftest.py')
-rw-r--r--docs/quick_tutorial/cookiecutters/tests/conftest.py76
1 files changed, 76 insertions, 0 deletions
diff --git a/docs/quick_tutorial/cookiecutters/tests/conftest.py b/docs/quick_tutorial/cookiecutters/tests/conftest.py
new file mode 100644
index 000000000..ec09cdb2d
--- /dev/null
+++ b/docs/quick_tutorial/cookiecutters/tests/conftest.py
@@ -0,0 +1,76 @@
+import os
+from pyramid.paster import get_appsettings
+from pyramid.scripting import prepare
+from pyramid.testing import DummyRequest, testConfig
+import pytest
+import webtest
+
+from myproject import main
+
+
+def pytest_addoption(parser):
+ parser.addoption('--ini', action='store', metavar='INI_FILE')
+
+@pytest.fixture(scope='session')
+def ini_file(request):
+ # potentially grab this path from a pytest option
+ return os.path.abspath(request.config.option.ini or 'testing.ini')
+
+@pytest.fixture(scope='session')
+def app_settings(ini_file):
+ return get_appsettings(ini_file)
+
+@pytest.fixture(scope='session')
+def app(app_settings):
+ return main({}, **app_settings)
+
+@pytest.fixture
+def testapp(app):
+ testapp = webtest.TestApp(app, extra_environ={
+ 'HTTP_HOST': 'example.com',
+ })
+
+ return testapp
+
+@pytest.fixture
+def app_request(app):
+ """
+ A real request.
+
+ This request is almost identical to a real request but it has some
+ drawbacks in tests as it's harder to mock data and is heavier.
+
+ """
+ with prepare(registry=app.registry) as env:
+ request = env['request']
+ request.host = 'example.com'
+ yield request
+
+@pytest.fixture
+def dummy_request():
+ """
+ A lightweight dummy request.
+
+ This request is ultra-lightweight and should be used only when the request
+ itself is not a large focus in the call-stack. It is much easier to mock
+ and control side-effects using this object, however:
+
+ - It does not have request extensions applied.
+ - Threadlocals are not properly pushed.
+
+ """
+ request = DummyRequest()
+ request.host = 'example.com'
+
+ return request
+
+@pytest.fixture
+def dummy_config(dummy_request):
+ """
+ A dummy :class:`pyramid.config.Configurator` object. This allows for
+ mock configuration, including configuration for ``dummy_request``, as well
+ as pushing the appropriate threadlocals.
+
+ """
+ with testConfig(request=dummy_request) as config:
+ yield config