Skip to main content
Join the official Python Developers Survey 2018 and win valuable prizes: Start the survey!

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.

Filename, size & hash SHA256 hash help File type Python version Upload date
pytest_nginx-1.1-py2.py3-none-any.whl (10.4 kB) Copy SHA256 hash SHA256 Wheel py2.py3 Aug 12, 2017
pytest_nginx-1.1-py3.6.egg (15.3 kB) Copy SHA256 hash SHA256 Egg 3.6 Aug 12, 2017

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page