Skip to main content

pytest plugin for test session metadata

Project description

pytest-metadata
===============

pytest-metadata is a plugin for `pytest <http://pytest.org>`_ that provides
access to test session metadata.

.. image:: https://img.shields.io/badge/license-MPL%202.0-blue.svg
:target: https://github.com/pytest-dev/pytest-metadata/blob/master/LICENSE
:alt: License
.. image:: https://img.shields.io/pypi/v/pytest-metadata.svg
:target: https://pypi.python.org/pypi/pytest-metadata/
:alt: PyPI
.. image:: https://img.shields.io/travis/pytest-dev/pytest-metadata.svg
:target: https://travis-ci.org/pytest-dev/pytest-metadata/
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
:target: https://github.com/ambv/black
:alt: Travis
.. image:: https://img.shields.io/github/issues-raw/pytest-dev/pytest-metadata.svg
:target: https://github.com/pytest-dev/pytest-metadata/issues
:alt: Issues
.. image:: https://img.shields.io/requires/github/pytest-dev/pytest-metadata.svg
:target: https://requires.io/github/pytest-dev/pytest-metadata/requirements/?branch=master
:alt: Requirements

Requirements
------------

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

- Python 2.7, 3.6, PyPy, or PyPy3

Installation
------------

To install pytest-metadata:

.. code-block:: bash

$ pip install pytest-metadata

Development
-----------

To contribute to pytest-metadata it helps to
have `Pipenv <https://pipenv.readthedocs.io/en/latest/>`_
and `pre-commit <https://pre-commit.com/>`_ installed.

.. code-block:: bash

$ pipenv install --dev
$ pre-commit install

Running Tests
_____________

We use `Tox <http://tox.testrun.org/>`_ to manage running tests
against the supported Python versions.

.. code-block:: bash

$ pipenv run tox

Available metadata
------------------

The following metadata is gathered by this plugin:

======== =============== ===================================
Key Description Example
======== =============== ===================================
Python Python version 3.6.4
Platform Platform Darwin-17.4.0-x86_64-i386-64bit
Packages pytest packages {'py': '1.5.2', 'pytest': '3.4.1'}
Plugins pytest plugins {'metadata': '1.6.0'}
======== =============== ===================================

Additional metadata
-------------------

You can provide your own metadata (key, value pair) by specifying ``--metadata`` on the commandline::

pytest --metadata foo bar

Note: You can provide multiple sets of ``--metadata``::

pytest --metadata foo bar --metadata baz zoo

Continuous integration
----------------------

When run in a continuous integration environment, additional metadata is added
from environment variables. Below is a list of the supported continuous
integration providers, along with links to the environment variables that are
added to metadata if they're present.

* `AppVeyor <https://www.appveyor.com/docs/environment-variables/>`_
* `Bitbucket <https://confluence.atlassian.com/bitbucket/environment-variables-794502608.html>`_
* `CircleCI <https://circleci.com/docs/1.0/environment-variables/>`_
* `GitLab CI <http://docs.gitlab.com/ce/ci/variables/README.html>`_
* `Jenkins <https://wiki.jenkins-ci.org/display/JENKINS/Building+a+software+project#Buildingasoftwareproject-JenkinsSetEnvironmentVariables>`_
* `TaskCluster <https://docs.taskcluster.net/reference/workers/docker-worker/environment>`_
* `Travis CI <https://docs.travis-ci.com/user/environment-variables/>`_

Note that if you're using `Tox <http://tox.readthedocs.io/>`_ to run your tests
then you will need to `pass down any additional environment variables <http://tox.readthedocs.io/en/latest/example/basic.html#passing-down-environment-variables>`_
for these to be picked up.

Viewing metadata
----------------

If you pass ``--verbose`` on the command line when running your tests, then the
metadata will be displayed in the terminal report header::

pytest --verbose
============================ test session starts ============================
platform darwin -- Python 3.6.4, pytest-3.4.1, py-1.5.2, pluggy-0.6.0 -- /usr/bin/python
cachedir: .pytest_cache
metadata: {'Python': '3.6.4', 'Platform': 'Darwin-17.4.0-x86_64-i386-64bit', 'Packages': {'pytest': '3.4.1', 'py': '1.5.2', 'pluggy': '0.6.0'}, 'Plugins': {'metadata': '1.6.0'}}
plugins: metadata-1.6.0

Accessing metadata
------------------

To add/modify/delete metadata at the end of metadata collection, you can use the ``pytest_metadata`` hook:

.. code-block:: python

import pytest
@pytest.mark.optionalhook
def pytest_metadata(metadata):
metadata.pop("password", None)

To access the metadata from a test or fixture, you can use the ``metadata``
fixture:

.. code-block:: python

def test_metadata(metadata):
assert 'metadata' in metadata['Plugins']

To access the metadata from a plugin, you can use the ``_metadata`` attribute of
the ``config`` object. This can be used to read/add/modify the metadata:

.. code-block:: python

def pytest_configure(config):
if hasattr(config, '_metadata'):
config._metadata['foo'] = 'bar'

Plugin integrations
-------------------

Here's a handy list of plugins that either read or contribute to the metadata:

* `pytest-base-url <https://pypi.python.org/pypi/pytest-base-url/>`_ - Adds the
base URL to the metadata.
* `pytest-html <https://pypi.python.org/pypi/pytest-html/>`_ - Displays the
metadata at the start of each report.
* `pytest-selenium <https://pypi.python.org/pypi/pytest-selenium/>`_ - Adds the
driver, capabilities, and remote server to the metadata.

Resources
---------

- `Release Notes <http://github.com/davehunt/pytest-metadata/blob/master/CHANGES.rst>`_
- `Issue Tracker <http://github.com/davehunt/pytest-metadata/issues>`_
- `Code <http://github.com/davehunt/pytest-metadata/>`_


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-metadata-1.8.0.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

pytest_metadata-1.8.0-py2.py3-none-any.whl (9.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file pytest-metadata-1.8.0.tar.gz.

File metadata

  • Download URL: pytest-metadata-1.8.0.tar.gz
  • Upload date:
  • Size: 9.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for pytest-metadata-1.8.0.tar.gz
Algorithm Hash digest
SHA256 2071a59285de40d7541fde1eb9f1ddea1c9db165882df82781367471238b66ba
MD5 95674c2390b58e0138cabac5101d1908
BLAKE2b-256 1238eed3a1e00c765e4da61e4e833de41c3458cef5d18e819d09f0f160682993

See more details on using hashes here.

File details

Details for the file pytest_metadata-1.8.0-py2.py3-none-any.whl.

File metadata

  • Download URL: pytest_metadata-1.8.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 9.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for pytest_metadata-1.8.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c29a1fb470424926c63154c1b632c02585f2ba4282932058a71d35295ff8c96d
MD5 349315811c24784fe0a6953376ca1479
BLAKE2b-256 ce8fd0542e1aa0e23d902ce6acce2790736473da94453a36bdc7829f25734199

See more details on using hashes here.

Supported by

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