Skip to main content

pytest plugin for URL based testing

Project description

pytest-base-url is a simple plugin for pytest that provides an optional base URL via the command line or configuration file.

License PyPI Travis Issues Requirements

Requirements

You will need the following prerequisites in order to use pytest-base-url:

  • Python 2.7, 3.6, PyPy, or PyPy3

  • py.test 2.7 or newer

Installation

To install pytest-base-url:

$ pip install pytest-base-url

Contributing

We welcome contributions.

To learn more, see Development

Specifying a Base URL

Rather than repeating or abstracting a base URL in your tests, pytest-base-url provides a base_url fixture that returns the specified base URL.

import urllib2

def test_example(base_url):
    assert 200 == urllib2.urlopen(base_url).getcode()

Using the Command Line

You can specify the base URL on the command line:

$ py.test --base-url http://www.example.com

Using a Configuration File

You can specify the base URL using a configuration file:

[pytest]
base_url = http://www.example.com

Using an Environment Variable

You can specify the base URL by setting the PYTEST_BASE_URL environment variable.

Using a Fixture

If your test harness takes care of launching an instance of your application under test, you may not have a predictable base URL to provide on the command line. Fortunately, it’s easy to override the base_url fixture and return the correct URL to your test.

In the following example a live_server fixture is used to start the application and live_server.url returns the base URL of the site.

import urllib2
import pytest

@pytest.fixture
def base_url(live_server):
    return live_server.url

def test_search(base_url):
    assert 200 == urllib2.urlopen('{0}/search'.format(base_url)).getcode()

Available Live Servers

It’s relatively simple to create your own live_server fixture, however you may be able to take advantage of one of the following:

  • Django applications can use pytest-django’s live_server fixture.

  • Flask applications can use pytest-flask’s live_server fixture.

Verifying the Base URL

If you specify a base URL for a site that’s unavailable then all tests using that base URL will likely fail. To avoid running every test in this instance, you can enable base URL verification. This will check the base URL is responding before proceeding with the test suite. To enable this, specify the --verify-base-url command line option or set the VERIFY_BASE_URL environment variable to TRUE.

Skipping Base URLs

You can skip tests based on the value of the base URL so long as it is provided either by the command line or in a configuration file:

import urllib2
import pytest

@pytest.mark.skipif(
    "'dev' in config.getoption('base_url')",
    reason='Search not available on dev')
def test_search(base_url):
    assert 200 == urllib2.urlopen('{0}/search'.format(base_url)).getcode()

Unfortunately if the URL is provided by a fixture, there is no way to know this value at test collection.

Resources

Project details


Download files

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

Source Distribution

pytest-base-url-1.4.2.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

pytest_base_url-1.4.2-py2.py3-none-any.whl (4.9 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file pytest-base-url-1.4.2.tar.gz.

File metadata

  • Download URL: pytest-base-url-1.4.2.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.7.1

File hashes

Hashes for pytest-base-url-1.4.2.tar.gz
Algorithm Hash digest
SHA256 7f1f32e08c2ee751e59e7f5880235b46e83496adc5cba5a01ca218c6fe81333d
MD5 a5d8459ba5a4546b76504096f7a87f80
BLAKE2b-256 fa8f26f0c94da88300767e785fe3c11639c22901cb0db97ca0de214a7b562ba7

See more details on using hashes here.

File details

Details for the file pytest_base_url-1.4.2-py2.py3-none-any.whl.

File metadata

  • Download URL: pytest_base_url-1.4.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 4.9 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.7.1

File hashes

Hashes for pytest_base_url-1.4.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 8b6523a1a3af73c317bdae97b722dfb55a7336733d1ad411eb4a4931347ba77a
MD5 9665287dc50280d1a7eab1cc8c382d54
BLAKE2b-256 5ba189e6b380d94c9fae3ccc08a6d264198c60d65d8e886d328bd229a3afc66b

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