nginx fixture for pytest
Project description
pytest-nginx
pytest-nginx is a pytest plugin, that allows you to test code, which requires communicating with a full-fledged web server. Custom fixtures can be made which manage the content of the server root directory.
Usage
The plugin contains one fixture:
nginx_proc - session scoped fixture, which manages the nginx daemon with the most basic configuration for serving static files.
nginx_php_proc - session scoped fixture, which manages the nginx daemon and the php-fpm daemon, both configured to work together.
All fixtures take the name of a fixture managing the server root directory. In the simplest case it is an empty temporary directory managed with the tmpdir_factory built-in fixture:
from pytest_nginx import factories
@pytest.fixture(scope="session")
def nginx_server_root(tmpdir_factory):
return tmpdir_factory.mktemp("nginx-server-root")
nginx_proc = factories.nginx_proc("nginx_server_root")
To manage the served content, you can create additional module or function-scoped fixtures on top of nginx_proc:
@pytest.fixture(scope="module")
def nginx_hello_world(nginx_proc):
f = open(os.path.join(nginx_proc.server_root, "index.html"), "w")
f.write("Hello world! This is pytest-nginx serving on host {}, port {}."
.format(nginx_proc.host, nginx_proc.port))
f.close()
return nginx_proc
Configuration
You can define your settings in three ways: with fixture factory arguments, with command line options and with pytest.ini configuration options. These settings are handled in the following order:
Fixture factory arguments
Command line options
pytest.ini configuration options
Fixture factory argument |
Command line option |
pytest.ini option |
Default |
---|---|---|---|
host |
–nginx-host |
nginx_host |
127.0.0.1 |
port |
–nginx-port |
nginx_port |
random |
nginx_exec |
–nginx-exec |
nginx_exec |
nginx |
nginx_params |
–nginx-params |
nginx_params |
“” |
nginx_config_template |
–nginx-config-template |
nginx_config_template |
auto-generated |
php_fpm_exec |
–php-fpm-exec |
php_fpm_exec |
php-fpm |
php_fpm_params |
–php-fpm-params |
php_fpm_params |
“” |
php_fpm_config_template |
–php-fpm-config-template |
php_fpm_config_template |
auto-generated |
Examples showing how to specify the port number:
Pass it as an argument to the factory function:
nginx_proc = factories.nginx_proc(port=8888)
Use the --nginx-port command line option when running pytest:
pytest ./tests --nginx-port=8888
Add the nginx_port option to the pytest.ini file:
[pytest] nginx_port =
8888
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 Distributions
Built Distributions
Hashes for pytest_nginx-1.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b459519dd57c1ba5c21193898de79a4d2eabd9ddc19405ab298fa9eaa1bd2081 |
|
MD5 | 2b3d352113cec40e164d1f828bc57575 |
|
BLAKE2b-256 | 14ec3bdc3d47e3faed35adb238ff83d9fd8ebf58f297b87577c84943d16c34a2 |