Fixture configuration utils for py.test
Simple configuration objects for Py.test fixtures. Allows you to skip tests when their required config variables aren't set.
Install using your favourite package manager:
.. code:: bash
pip install pytest-fixture-config
# or..
easy_install pytest-fixture-config
Enable the fixture explicitly in your tests or conftest.py (not required when using setuptools entry points):
.. code:: python
pytest_plugins = ['pytest_fixture_config']
To specify your variables you create a class somewhere in your plugin module, and a singleton instance of the class which reads the variables from wherever you want. In this example we read them from the shell environment:
.. code:: python
import os
from pytest_fixture_config import Config
class FixtureConfig(Config):
__slots__ = ('log_dir', 'log_watcher')
CONFIG=FixtureConfig(
log_dir=os.getenv('LOG_DIR', '/var/log'), # This has a default
log_watcher=os.getenv('LOG_WATCHER'), # This does not
)
Simply reference the singleton at run-time in your fixtures:
.. code:: python
import pytest
@pytest.fixture
def log_watcher():
return subprocess.popen([CONFIG.log_watcher, '--log-dir', CONFIG.log_dir])
def test_log_watcher(watcher):
watcher.communicate()
There are some decorators that allow you to skip tests when settings aren't set. This is useful when you're testing something you might not have installed but don't want your tests suite to fail:
.. code:: python
from pytest_fixture_config import requires_config
@pytest.fixture
@requires_config(CONFIG, ['log_watcher', 'log_dir'])
def log_watcher():
return subprocess.popen([CONFIG.log_watcher, '--log-dir', CONFIG.log_dir])
There is also a version for yield_fixtures:
.. code:: python
from pytest_fixture_config import yield_requires_config
@pytest.fixture
@yield_requires_config(CONFIG, ['log_watcher', 'log_dir'])
def log_watcher():
watcher = subprocess.popen([CONFIG.log_watcher, '--log-dir', CONFIG.log_dir])
yield watcher
watcher.kill()
1.7.0
- All: Support pytest >= 4.0.0
- All: Support Python 3.7
- pytest-server-fixtures: if host not defined on your machine, default
to localhost
- pytest-server-fixture: Pin to rethinkdb < 2.4.0 due to upstream API
changes
- pytest-verbose-parametrize: Add support for revamped marker
infrastructure
- pytest-verbose-parametrize: Fix integration tests to support pytest
>= 4.1.0
- pytest-virtualenv: Add virtualenv as install requirement. Fixes #122
- pytest-webdriver: Fix RemovedInPytest4Warning using getfixturevalue
- circleci: Fix checks by skipping coverall submission for developer
without push access
- wheels: Generate universal wheels installable with both python 2.x
and 3.x
- dist: Remove support for building and distributing \*.egg files
- VagrantFile: Install python 3.7 and initialize python 3.7 by default
- Fix DeprecationWarning warnings using "logger.warning()" function
1.6.2 (2019-02-21)
1.6.1 (2019-02-12)
- pytest-server-fixtures: fix exception when attempting to access
hostname while server is not started
1.6.0 (2019-02-12)
1.5.1 (2019-01-24)
- pytest-verbose-parametrize: fixed unicode parameters when using
``@pytest.mark.parametrize``
1.5.0 (2019-01-23)
1.4.1 (2019-01-18)
- pytest-server-fixtures: server fixture binary path specified in ENV
now only affect server class 'thread'
1.4.0 (2019-01-15)
1.3.1 (2018-06-28)
- Use pymongo list\_database\_names() instead of the deprecated
database\_names(), added pymongo>=3.6.0 dependency
1.3.0 (2017-11-17)
1.2.12 (2017-8-1)
- Fixed regression on cacheing ephemeral hostname, some clients were
relying on this. This is now optional.
1.2.11 (2017-7-21)
1.2.10 (2017-2-23)
- Handle custom Pytest test items in pytest-webdriver
1.2.9 (2017-2-23)
~~~~~~~~~~~~~~~~~
- Add username into mongo server fixture tempdir path to stop
collisions on shared multiuser filesystems
1.2.8 (2017-2-21)
~~~~~~~~~~~~~~~~~
- Return function results in shutil.run.run\_as\_main
1.2.7 (2017-2-20)
~~~~~~~~~~~~~~~~~
- More handling for older versions of path.py
- Allow virtualenv argument passing in pytest-virtualenv
1.2.6 (2017-2-16 )
1.2.5 (2016-12-09)
- Improvements for server runner host and port generation, now supports
random local IPs
- Bugfix for RethinkDB fixture config
1.2.4 (2016-11-14)
1.2.3 (2016-11-7)
- Improve resiliency of Mongo fixture startup checks
1.2.2 (2016-10-27)
1.2.1 (2016-3-1)
- Fixed pytest-verbose-parametrize for latest version of py.test
1.2.0 (2016-2-19)
1.1.1 (2016-2-16)
- pytest-profiling improvement: escape illegal characters in .prof
files (Thanks to Aarni Koskela for the PR)
1.1.0 (2016-2-15)
1.0.1 (2015-12-23)
- Packaging bugfix
1.0.0 (2015-12-21)