Skip to main content

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:

  1. Fixture factory arguments

  2. Command line options

  3. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

pytest_nginx-1.1-py3.6.egg (15.3 kB view details)

Uploaded Source

pytest_nginx-1.1-py2.py3-none-any.whl (10.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file pytest_nginx-1.1-py3.6.egg.

File metadata

File hashes

Hashes for pytest_nginx-1.1-py3.6.egg
Algorithm Hash digest
SHA256 9dec47a0171d282b0d4e07043d68810d32b0f43f82bde91a8ad06016fb98747e
MD5 5004273948680c43275e5385f7a5ce57
BLAKE2b-256 bbe2c0710f120f860f60850f39c29e1a1367b4d1e359a905eb2d50535aefb66d

See more details on using hashes here.

File details

Details for the file pytest_nginx-1.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for pytest_nginx-1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b459519dd57c1ba5c21193898de79a4d2eabd9ddc19405ab298fa9eaa1bd2081
MD5 2b3d352113cec40e164d1f828bc57575
BLAKE2b-256 14ec3bdc3d47e3faed35adb238ff83d9fd8ebf58f297b87577c84943d16c34a2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page