Pyramid server fixture for py.test
Project description
Pyramid server fixture for py.test. The server is session-scoped by default and run in a subprocess and temp dir, and as such is a ‘real’ server that you can point a Selenium webdriver at.
Installation
Install using your favourite package manager:
pip install pytest-pyramid
# or..
easy_install pytest-pyramid
Enable the fixture explicitly in your tests or conftest.py (not required when using setuptools entry points):
pytest_plugins = ['pytest_pyramid_server']
Configuration
This fixture searches for its configuration in the current working directory called ‘testing.ini’. All .ini files in the cwd will be copied to the tempdir so that paster-style config chaining still works. For example:
my-pyramid-app/ src/ # Project code is in here setup.py # Project setup.py development.ini # Development settings production.ini # Production settings testing.ini # Testing settings, will be used if tests # are invoked using 'py.test' from this # directory
Example
Here’s a noddy test case showing the main functionality:
def test_pyramid_server(pyramid_server):
# This is the http://{host}:{port} of the running server. It will attempt to resolve
# to externally accessable IPs so a web browser can access it.
assert pyramid_server.uri.startswith('http')
# GET a document from the server.
assert pyramid_server.get('/orders/macbooks', as_json=True) == {'id-1234': 'MPB-15inch'}
# POST a document to the server.
assert pyramid_server.post('/login', 'guest:password123').response_code == 200
# ``path.py`` path object to the running config file
assert pyramid_server.working_config.endswith('testing.ini')
PyramidServer class
Using this with the default pyramid_server py.test fixture is good enough for a lot of use-cases however you may wish to have more fine-grained control about the server configuration. To do this you can use the underlying server class directly - this is an implenentation of the pytest-server-fixture framework and as such acts as a context manager:
from pytest_pyramid import PyramidTestServer
def test_custom_server():
with PyramidTestServer(
# You can specify you own config directory and name
config_dir='/my/config',
config_fileme='my_testing.ini',
# You can set arbitrary config variables in the constructor
extra_config_vars={'my_config_section': {'my_dbname: 'foo',
'my_dbpass: 'bar'}}
) as server:
assert not server.dead
assert 'my_dbname = foo' in server.working_config.text()
# Server should now be dead
assert server.dead
pytest-webdriver and PageObjects integration
The pytest-webdriver plugin will detect when this plugin is active and set its default base URL to the url of the running server. This is a nice way of avoiding lots of string manipulation in your browser tests when using Page Objects:
from page_objects import PageObject, PageElement
class LoginPage(PageObject):
username = PageElement(id_='username')
password = PageElement(name='password')
login = PageElement(css='input[type="submit"]')
def test_login_page(webdriver, pyramid_server):
page = LoginPage(webdriver)
page.login.click()
page.get('/foo/bar')
assert webdriver.getCurrentUrl() == pyramid_server.uri + '/foo/bar'
Changelog
1.0 (2015-12-21)
Initial public release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for pytest-pyramid-server-1.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9919e4e33294d3faa2dbc78107aa70a18ddbb3df8a535b664c53984219331da |
|
MD5 | 2602a7c55bed09099fcdc3a70e633358 |
|
BLAKE2b-256 | 2a05e0a1f7b15eb23967c0ebda76b664a8ae68204086530823cf555a78107d57 |
Hashes for pytest_pyramid_server-1.0.0-py2.7.egg
Algorithm | Hash digest | |
---|---|---|
SHA256 | 79963ee827cd2e4cacd42fecde6aabd3d9066b74db902997d06681fab111a38e |
|
MD5 | f28884c376d834c9cbbad8451be119db |
|
BLAKE2b-256 | 127e9f4cb388c1e1376c4c6917ee80148bdb004272fbcea206713341a9aaf2b2 |
Hashes for pytest_pyramid_server-1.0.0-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9be3687d47f14c555c64df0b785fd6b1898d412100596e2801e41c77495f3db3 |
|
MD5 | ef9aff977685ad242f13d9215f45588d |
|
BLAKE2b-256 | b5a74d335268c7242747c38ed42b9c3c179b98f1dcd6ed51f37b1d1e781802d5 |