https://github.com/pytest-dev/pytest-cpp
Use pytest's runner to discover and execute C++ tests
https://github.com/pytest-dev/pytest-cpp
c-plus-plus pytest
Last synced: 9 months ago
JSON representation
Use pytest's runner to discover and execute C++ tests
- Host: GitHub
- URL: https://github.com/pytest-dev/pytest-cpp
- Owner: pytest-dev
- License: mit
- Created: 2014-08-09T23:32:11.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2025-03-31T16:03:22.000Z (11 months ago)
- Last Synced: 2025-04-09T09:49:55.933Z (10 months ago)
- Topics: c-plus-plus, pytest
- Language: C++
- Size: 512 KB
- Stars: 133
- Watchers: 31
- Forks: 23
- Open Issues: 6
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
==========
pytest-cpp
==========
|python| |version| |anaconda| |ci| |black|
Use `pytest `_ runner to discover and execute C++ tests.
Supports `Google Test `_,
`Boost.Test `_,
and `Catch2 `_:
.. |version| image:: http://img.shields.io/pypi/v/pytest-cpp.png
:target: https://crate.io/packages/pytest-cpp
.. |anaconda| image:: https://img.shields.io/conda/vn/conda-forge/pytest-cpp.svg
:target: https://anaconda.org/conda-forge/pytest-cpp
.. |ci| image:: https://github.com/pytest-dev/pytest-cpp/workflows/test/badge.svg
:target: https://github.com/pytest-dev/pytest-cpp/actions
.. |python| image:: https://img.shields.io/pypi/pyversions/pytest-cpp.svg
:target: https://pypi.python.org/pypi/pytest-cpp/
:alt: Supported Python versions
.. |black| image:: https://img.shields.io/badge/code%20style-black-000000.svg
:target: https://github.com/psf/black
This brings several benefits:
* Allows you to run all your tests in multi-language projects with a single
command;
* Execute C++ tests in **parallel** using
`pytest-xdist `_ plugin;
* Use ``--junitxml`` option to produce a single and uniform xml file with all
your test suite results;
* Filter which tests to run using standard test filtering capabilities, such as
by file names, directories, keywords by using the ``-k`` option, etc.;
.. contents:: **Table of Contents**
Installation
============
Install using `pip `_:
.. code-block:: console
$ pip install pytest-cpp
Usage
=====
.. code-block:: console
$ pytest
Once installed, pytest runs will search and run tests
found in **executable** files, detecting if the suites are
Google, Boost, or Catch2 tests automatically.
Configuration Options
~~~~~~~~~~~~~~~~~~~~~
Following are the options that can be put in the pytest configuration file related
to pytest-cpp.
cpp_files
^^^^^^^^^
You can configure which files are tested for suites by using the ``cpp_files``
ini configuration option:
.. code-block:: ini
[pytest]
cpp_files = test_suite*
By default matches ``test_*`` and ``*_test`` executable files.
cpp_arguments
^^^^^^^^^^^^^
Arguments to the C++ tests can be provided with the
``cpp_arguments`` ini configuration option.
For example:
.. code-block:: ini
[pytest]
cpp_arguments =-v --log-dir=logs
You can change this option directly in the command-line using
pytest's ``-o`` option:
.. code-block:: console
$ pytest -o cpp_arguments='-v --log-dir=logs'
**Important**: do not pass filtering arguments (for example ``--gtest_filter``), as this will conflict
with the plugin functionality and behave incorrectly.
To filter tests, use the standard pytest filtering facilities (such as ``-k``).
cpp_ignore_py_files
^^^^^^^^^^^^^^^^^^^
This option defaults to ``True`` and configures the plugin to ignore ``*.py`` files that
would otherwise match the ``cpp_files`` option.
Set it to ``False`` if you have C++ executable files that end with the ``*.py`` extension.
.. code-block:: ini
[pytest]
cpp_ignore_py_files = False
cpp_harness
^^^^^^^^^^^
This option allows the usage of tools that are used by invoking them on the console
wrapping the test binary, like valgrind and memcheck:
.. code-block:: ini
[pytest]
cpp_harness = valgrind --tool=memcheck
cpp_harness_collect
^^^^^^^^^^^^^^^^^^^
This option allows the usage of tools or emulators (like wine or qemu) that are used by invoking them
on the console wrapping the test binary during a test collection.
Might be used in the combination with ``cpp_harness`` to run a binary in emulators, like wine or qemu
in cross-compilation targets.
.. code-block:: ini
[pytest]
cpp_harness_collect = qemu-x86_64 -L libs/
or
.. code-block:: ini
[pytest]
cpp_harness_collect = qemu-x86_64 -L libs/
cpp_harness = qemu-x86_64 -L libs/
Changelog
=========
Please consult `CHANGELOG `_.
Support
=======
All feature requests and bugs are welcome, so please make sure to add
feature requests and bugs to the
`issues `_ page!