pytest-dev/pytest-testinfra

Testinfra test your infrastructures

Python

2,478

800 commits

updated Jul 20, 2026

See the code

README

##################################
Testinfra test your infrastructure
##################################

Latest documentation: https://testinfra.readthedocs.io/en/latest

.. important::

   **Maintenance Notice**

   This project is currently **not actively maintained**, and responses
   to issues or pull requests may be delayed for **several months**.
   Please consider this when using the project and feel free to
   contribute via pull requests, which will be reviewed as time permits.
   Thank you for your understanding!

About
=====

With Testinfra you can write unit tests in Python to test *actual state* of
your servers configured by management tools like Salt_, Ansible_, Puppet_,
Chef_ and so on.

Testinfra aims to be a Serverspec_ equivalent in python and is written as
a plugin to the powerful Pytest_ test engine

License
=======

`Apache License 2.0 <https://github.com/pytest-dev/pytest-testinfra/blob/main/LICENSE>`_

The logo is licensed under the `Creative Commons NoDerivatives 4.0 License <https://creativecommons.org/licenses/by-nd/4.0/>`_
If you have some other use in mind, contact us.

Quick start
===========

Install testinfra using pip::

    $ pip install pytest-testinfra

    # or install the devel version
    $ pip install 'git+https://github.com/pytest-dev/pytest-testinfra@main#egg=pytest-testinfra'


Write your first tests file to `test_myinfra.py`:

.. code-block:: python

    def test_passwd_file(host):
        passwd = host.file("/etc/passwd")
        assert passwd.contains("root")
        assert passwd.user == "root"
        assert passwd.group == "root"
        assert passwd.mode == 0o644


    def test_nginx_is_installed(host):
        nginx = host.package("nginx")
        assert nginx.is_installed
        assert nginx.version.startswith("1.2")


    def test_nginx_running_and_enabled(host):
        nginx = host.service("nginx")
        assert nginx.is_running
        assert nginx.is_enabled


And run it::

    $ pytest -v test_myinfra.py


    ====================== test session starts ======================
    platform linux -- Python 2.7.3 -- py-1.4.26 -- pytest-2.6.4
    plugins: testinfra
    collected 3 items

    test_myinfra.py::test_passwd_file[local] PASSED
    test_myinfra.py::test_nginx_is_installed[local] PASSED
    test_myinfra.py::test_nginx_running_and_enabled[local] PASSED

    =================== 3 passed in 0.66 seconds ====================


.. _Salt: https://saltstack.com/
.. _Ansible: https://www.ansible.com/
.. _Puppet: https://puppetlabs.com/
.. _Chef: https://www.chef.io/
.. _Serverspec: https://serverspec.org/
.. _Pytest: https://pytest.org/

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

ansible
chef
devops
devops-tools
docker
infrastructure-as-code
infrastructure-testing
kubernetes
nagios
puppet
pytest-plugin
python
saltstack
tdd
tdd-utilities
testing
testing-tools

pytest-dev/pytest-testinfra

Testinfra test your infrastructures

Python

2,478

800 commits

updated Jul 20, 2026

See the code

README

##################################
Testinfra test your infrastructure
##################################

Latest documentation: https://testinfra.readthedocs.io/en/latest

.. important::

   **Maintenance Notice**

   This project is currently **not actively maintained**, and responses
   to issues or pull requests may be delayed for **several months**.
   Please consider this when using the project and feel free to
   contribute via pull requests, which will be reviewed as time permits.
   Thank you for your understanding!

About
=====

With Testinfra you can write unit tests in Python to test *actual state* of
your servers configured by management tools like Salt_, Ansible_, Puppet_,
Chef_ and so on.

Testinfra aims to be a Serverspec_ equivalent in python and is written as
a plugin to the powerful Pytest_ test engine

License
=======

`Apache License 2.0 <https://github.com/pytest-dev/pytest-testinfra/blob/main/LICENSE>`_

The logo is licensed under the `Creative Commons NoDerivatives 4.0 License <https://creativecommons.org/licenses/by-nd/4.0/>`_
If you have some other use in mind, contact us.

Quick start
===========

Install testinfra using pip::

    $ pip install pytest-testinfra

    # or install the devel version
    $ pip install 'git+https://github.com/pytest-dev/pytest-testinfra@main#egg=pytest-testinfra'


Write your first tests file to `test_myinfra.py`:

.. code-block:: python

    def test_passwd_file(host):
        passwd = host.file("/etc/passwd")
        assert passwd.contains("root")
        assert passwd.user == "root"
        assert passwd.group == "root"
        assert passwd.mode == 0o644


    def test_nginx_is_installed(host):
        nginx = host.package("nginx")
        assert nginx.is_installed
        assert nginx.version.startswith("1.2")


    def test_nginx_running_and_enabled(host):
        nginx = host.service("nginx")
        assert nginx.is_running
        assert nginx.is_enabled


And run it::

    $ pytest -v test_myinfra.py


    ====================== test session starts ======================
    platform linux -- Python 2.7.3 -- py-1.4.26 -- pytest-2.6.4
    plugins: testinfra
    collected 3 items

    test_myinfra.py::test_passwd_file[local] PASSED
    test_myinfra.py::test_nginx_is_installed[local] PASSED
    test_myinfra.py::test_nginx_running_and_enabled[local] PASSED

    =================== 3 passed in 0.66 seconds ====================


.. _Salt: https://saltstack.com/
.. _Ansible: https://www.ansible.com/
.. _Puppet: https://puppetlabs.com/
.. _Chef: https://www.chef.io/
.. _Serverspec: https://serverspec.org/
.. _Pytest: https://pytest.org/

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

ansible
chef
devops
devops-tools
docker
infrastructure-as-code
infrastructure-testing
kubernetes
nagios
puppet
pytest-plugin
python
saltstack
tdd
tdd-utilities
testing
testing-tools

Project health

Overall

3.7/10

Maintained

0/10

Code review

5/10
OpenSSF Scorecard

Latest release

10.2.2 · Mar 30, 2025

Releases this year

0

Significant stargazers

(top 24 of 28)

Gram

365 followers · starred Mar 2023

Sambhav Kothari

374 followers · starred Oct 2024

Jeroen Ruigrok van der Werven

17 followers · starred Oct 2023

Nick Cabatoff

215 followers · starred May 2017