espressif / pytest-embedded

A pytest plugin that designed for embedded testing
https://docs.espressif.com/projects/pytest-embedded/en/latest/
MIT License
92 stars 26 forks source link
embedded pytest testing

pytest-embedded

Documentation Status Python 3.7+

A pytest plugin that has multiple services available for various functionalities. Designed for embedded testing.

Installation

pytest-embedded pytest-embedded-serial pytest-embedded-serial-esp pytest-embedded-idf pytest-embedded-qemu pytest-embedded-arduino pytest-embedded-wokwi pytest-embedded-nuttx

Packages under this repo mainly use semantic versioning. Sometimes a bug fix version may contain some non-breaking new features as well.

It is recommended to use ~=1.0 to get rid of breaking changes, and use the latest new features. For example,

pip install -U pytest-embedded~=1.0

Quickstart

from pytest_embedded import Dut

def test_basic_expect(redirect, dut: Dut):
    with redirect():
        print('this would be redirected')

    dut.expect('this')
    dut.expect_exact('would')
    dut.expect('[be]{2}')
    dut.expect_exact('redirected')
collected 1 item

test_basic.py .                                                        [100%]

============================= 1 passed in 0.01s =============================
collected 1 item

test_basic.py 2022-01-01 12:34:56 this would be redirected
.

============================= 1 passed in 0.01s =============================

The print line is also duplicated to console output.

Extra Services

You can activate more services with pytest --embedded-services service[,service] to enable extra fixtures and functionalities. These services are provided by several optional dependencies. You can install them via pip as well.

Available services:

Resources