# Scraped: https://github.com/espressif/pytest-embedded

Title: GitHub - espressif/pytest-embedded: A pytest plugin that designed for embedded testing

[Skip to content](https://github.com/espressif/pytest-embedded#start-of-content)

You signed in with another tab or window. [Reload](https://github.com/espressif/pytest-embedded) to refresh your session.You signed out in another tab or window. [Reload](https://github.com/espressif/pytest-embedded) to refresh your session.You switched accounts on another tab or window. [Reload](https://github.com/espressif/pytest-embedded) to refresh your session.Dismiss alert

{{ message }}

[espressif](https://github.com/espressif)/ **[pytest-embedded](https://github.com/espressif/pytest-embedded)** Public

- [Notifications](https://github.com/login?return_to=%2Fespressif%2Fpytest-embedded) You must be signed in to change notification settings
- [Fork\\
36](https://github.com/login?return_to=%2Fespressif%2Fpytest-embedded)
- [Star\\
128](https://github.com/login?return_to=%2Fespressif%2Fpytest-embedded)


A pytest plugin that designed for embedded testing


[docs.espressif.com/projects/pytest-embedded/en/latest/](https://docs.espressif.com/projects/pytest-embedded/en/latest/ "https://docs.espressif.com/projects/pytest-embedded/en/latest/")

### License

[View license](https://github.com/espressif/pytest-embedded/blob/main/LICENSE)

[128\\
stars](https://github.com/espressif/pytest-embedded/stargazers) [36\\
forks](https://github.com/espressif/pytest-embedded/forks) [Branches](https://github.com/espressif/pytest-embedded/branches) [Tags](https://github.com/espressif/pytest-embedded/tags) [Activity](https://github.com/espressif/pytest-embedded/activity)

[Star](https://github.com/login?return_to=%2Fespressif%2Fpytest-embedded)

[Notifications](https://github.com/login?return_to=%2Fespressif%2Fpytest-embedded) You must be signed in to change notification settings

# espressif/pytest-embedded

main

[**5** Branches](https://github.com/espressif/pytest-embedded/branches) [**126** Tags](https://github.com/espressif/pytest-embedded/tags)

[Go to Branches page](https://github.com/espressif/pytest-embedded/branches)[Go to Tags page](https://github.com/espressif/pytest-embedded/tags)

Go to file

Code

Open more actions menu

## Folders and files

| Name | Name | Last commit message | Last commit date |
| --- | --- | --- | --- |
| ## Latest commit<br>## History<br>[1,069 Commits](https://github.com/espressif/pytest-embedded/commits/main/) <br>[View commit history for this file.](https://github.com/espressif/pytest-embedded/commits/main/) 1,069 Commits |
| [.github](https://github.com/espressif/pytest-embedded/tree/main/.github ".github") | [.github](https://github.com/espressif/pytest-embedded/tree/main/.github ".github") | [ci: remove codeql](https://github.com/espressif/pytest-embedded/commit/5c2216aa8df0960738e07368bb6701638ef6757b "ci: remove codeql") | last monthJan 16, 2026 |
| [docs](https://github.com/espressif/pytest-embedded/tree/main/docs "docs") | [docs](https://github.com/espressif/pytest-embedded/tree/main/docs "docs") | [docs: small fixes](https://github.com/espressif/pytest-embedded/commit/e5d06e03d5e3725412f7e12349e93fb7f0bc2fca "docs: small fixes") | 3 months agoNov 6, 2025 |
| [examples](https://github.com/espressif/pytest-embedded/tree/main/examples "examples") | [examples](https://github.com/espressif/pytest-embedded/tree/main/examples "examples") | [fix(readme): Fix Arduino readme](https://github.com/espressif/pytest-embedded/commit/70b35814f384c56164858ffd43f35bdff48b16b8 "fix(readme): Fix Arduino readme") | 2 months agoDec 18, 2025 |
| [pytest-embedded-arduino](https://github.com/espressif/pytest-embedded/tree/main/pytest-embedded-arduino "pytest-embedded-arduino") | [pytest-embedded-arduino](https://github.com/espressif/pytest-embedded/tree/main/pytest-embedded-arduino "pytest-embedded-arduino") | [bump: version 2.5.0 → 2.6.0](https://github.com/espressif/pytest-embedded/commit/5a9f31836a0ecda03f2155044d28c436a3f59f6e "bump: version 2.5.0 → 2.6.0") | last monthJan 16, 2026 |
| [pytest-embedded-idf](https://github.com/espressif/pytest-embedded/tree/main/pytest-embedded-idf "pytest-embedded-idf") | [pytest-embedded-idf](https://github.com/espressif/pytest-embedded/tree/main/pytest-embedded-idf "pytest-embedded-idf") | [Merge pull request](https://github.com/espressif/pytest-embedded/commit/379e77a3cc6cd55cc4e505e372eb0719b56bff33 "Merge pull request #400 from horw/fix/elf-not-found-linux  fix: linux elf not found explicit error msg") [#400](https://github.com/espressif/pytest-embedded/pull/400) [from horw/fix/elf-not-found-linux](https://github.com/espressif/pytest-embedded/commit/379e77a3cc6cd55cc4e505e372eb0719b56bff33 "Merge pull request #400 from horw/fix/elf-not-found-linux  fix: linux elf not found explicit error msg") | 3 weeks agoJan 28, 2026 |
| [pytest-embedded-jtag](https://github.com/espressif/pytest-embedded/tree/main/pytest-embedded-jtag "pytest-embedded-jtag") | [pytest-embedded-jtag](https://github.com/espressif/pytest-embedded/tree/main/pytest-embedded-jtag "pytest-embedded-jtag") | [bump: version 2.5.0 → 2.6.0](https://github.com/espressif/pytest-embedded/commit/5a9f31836a0ecda03f2155044d28c436a3f59f6e "bump: version 2.5.0 → 2.6.0") | last monthJan 16, 2026 |
| [pytest-embedded-nuttx](https://github.com/espressif/pytest-embedded/tree/main/pytest-embedded-nuttx "pytest-embedded-nuttx") | [pytest-embedded-nuttx](https://github.com/espressif/pytest-embedded/tree/main/pytest-embedded-nuttx "pytest-embedded-nuttx") | [bump: version 2.5.0 → 2.6.0](https://github.com/espressif/pytest-embedded/commit/5a9f31836a0ecda03f2155044d28c436a3f59f6e "bump: version 2.5.0 → 2.6.0") | last monthJan 16, 2026 |
| [pytest-embedded-qemu](https://github.com/espressif/pytest-embedded/tree/main/pytest-embedded-qemu "pytest-embedded-qemu") | [pytest-embedded-qemu](https://github.com/espressif/pytest-embedded/tree/main/pytest-embedded-qemu "pytest-embedded-qemu") | [bump: version 2.5.0 → 2.6.0](https://github.com/espressif/pytest-embedded/commit/5a9f31836a0ecda03f2155044d28c436a3f59f6e "bump: version 2.5.0 → 2.6.0") | last monthJan 16, 2026 |
| [pytest-embedded-serial-esp](https://github.com/espressif/pytest-embedded/tree/main/pytest-embedded-serial-esp "pytest-embedded-serial-esp") | [pytest-embedded-serial-esp](https://github.com/espressif/pytest-embedded/tree/main/pytest-embedded-serial-esp "pytest-embedded-serial-esp") | [bump: version 2.5.0 → 2.6.0](https://github.com/espressif/pytest-embedded/commit/5a9f31836a0ecda03f2155044d28c436a3f59f6e "bump: version 2.5.0 → 2.6.0") | last monthJan 16, 2026 |
| [pytest-embedded-serial](https://github.com/espressif/pytest-embedded/tree/main/pytest-embedded-serial "pytest-embedded-serial") | [pytest-embedded-serial](https://github.com/espressif/pytest-embedded/tree/main/pytest-embedded-serial "pytest-embedded-serial") | [bump: version 2.5.0 → 2.6.0](https://github.com/espressif/pytest-embedded/commit/5a9f31836a0ecda03f2155044d28c436a3f59f6e "bump: version 2.5.0 → 2.6.0") | last monthJan 16, 2026 |
| [pytest-embedded-wokwi](https://github.com/espressif/pytest-embedded/tree/main/pytest-embedded-wokwi "pytest-embedded-wokwi") | [pytest-embedded-wokwi](https://github.com/espressif/pytest-embedded/tree/main/pytest-embedded-wokwi "pytest-embedded-wokwi") | [bump: version 2.5.0 → 2.6.0](https://github.com/espressif/pytest-embedded/commit/5a9f31836a0ecda03f2155044d28c436a3f59f6e "bump: version 2.5.0 → 2.6.0") | last monthJan 16, 2026 |
| [pytest-embedded](https://github.com/espressif/pytest-embedded/tree/main/pytest-embedded "pytest-embedded") | [pytest-embedded](https://github.com/espressif/pytest-embedded/tree/main/pytest-embedded "pytest-embedded") | [bump: version 2.5.0 → 2.6.0](https://github.com/espressif/pytest-embedded/commit/5a9f31836a0ecda03f2155044d28c436a3f59f6e "bump: version 2.5.0 → 2.6.0") | last monthJan 16, 2026 |
| [tests](https://github.com/espressif/pytest-embedded/tree/main/tests "tests") | [tests](https://github.com/espressif/pytest-embedded/tree/main/tests "tests") | [Merge pull request](https://github.com/espressif/pytest-embedded/commit/4c44d9d7d282b66f63c88b7fbd43b951f5e43ec1 "Merge pull request #398 from espressif/fix/panic-decoding  Fix/panic decoding") [#398](https://github.com/espressif/pytest-embedded/pull/398) [from espressif/fix/panic-decoding](https://github.com/espressif/pytest-embedded/commit/4c44d9d7d282b66f63c88b7fbd43b951f5e43ec1 "Merge pull request #398 from espressif/fix/panic-decoding  Fix/panic decoding") | 2 months agoDec 30, 2025 |
| [.editorconfig](https://github.com/espressif/pytest-embedded/blob/main/.editorconfig ".editorconfig") | [.editorconfig](https://github.com/espressif/pytest-embedded/blob/main/.editorconfig ".editorconfig") | [feat: writing feature list and some initial design](https://github.com/espressif/pytest-embedded/commit/45fd9965183e4490b7ade6c4f14dbfc92489216b "feat: writing feature list and some initial design") | 5 years agoApr 26, 2021 |
| [.flake8](https://github.com/espressif/pytest-embedded/blob/main/.flake8 ".flake8") | [.flake8](https://github.com/espressif/pytest-embedded/blob/main/.flake8 ".flake8") | [chore: update pre-commit](https://github.com/espressif/pytest-embedded/commit/444f677a3ab7c68b72e7967cd125959d31d97945 "chore: update pre-commit") | 4 years agoDec 28, 2022 |
| [.git-blame-ignore-revs](https://github.com/espressif/pytest-embedded/blob/main/.git-blame-ignore-revs ".git-blame-ignore-revs") | [.git-blame-ignore-revs](https://github.com/espressif/pytest-embedded/blob/main/.git-blame-ignore-revs ".git-blame-ignore-revs") | [chore: ignore ruff format commit](https://github.com/espressif/pytest-embedded/commit/eeb6f72075688b522cd42adfb7bcfbced22b910e "chore: ignore ruff format commit") | last yearJan 27, 2025 |
| [.gitignore](https://github.com/espressif/pytest-embedded/blob/main/.gitignore ".gitignore") | [.gitignore](https://github.com/espressif/pytest-embedded/blob/main/.gitignore ".gitignore") | [test: update coredump artifacts](https://github.com/espressif/pytest-embedded/commit/523c1ed5e7618ff9b169e0ef425ef76e03922ec1 "test: update coredump artifacts") | 2 months agoDec 16, 2025 |
| [.pre-commit-config.yaml](https://github.com/espressif/pytest-embedded/blob/main/.pre-commit-config.yaml ".pre-commit-config.yaml") | [.pre-commit-config.yaml](https://github.com/espressif/pytest-embedded/blob/main/.pre-commit-config.yaml ".pre-commit-config.yaml") | [\[pre-commit.ci\] pre-commit autoupdate](https://github.com/espressif/pytest-embedded/commit/4ef1f0e5eef970112c0c035cfaa03911fea064ae "[pre-commit.ci] pre-commit autoupdate  updates: - [github.com/astral-sh/ruff-pre-commit: v0.14.10 → v0.14.11](https://github.com/astral-sh/ruff-pre-commit/compare/v0.14.10...v0.14.11)") | last monthJan 12, 2026 |
| [.readthedocs.yaml](https://github.com/espressif/pytest-embedded/blob/main/.readthedocs.yaml ".readthedocs.yaml") | [.readthedocs.yaml](https://github.com/espressif/pytest-embedded/blob/main/.readthedocs.yaml ".readthedocs.yaml") | [bump: python version while building in rtd](https://github.com/espressif/pytest-embedded/commit/1c3c6721230aec60af40dab0dff4184475d872d6 "bump: python version while building in rtd") | 5 months agoSep 9, 2025 |
| [CHANGELOG.md](https://github.com/espressif/pytest-embedded/blob/main/CHANGELOG.md "CHANGELOG.md") | [CHANGELOG.md](https://github.com/espressif/pytest-embedded/blob/main/CHANGELOG.md "CHANGELOG.md") | [bump: version 2.5.0 → 2.6.0](https://github.com/espressif/pytest-embedded/commit/5a9f31836a0ecda03f2155044d28c436a3f59f6e "bump: version 2.5.0 → 2.6.0") | last monthJan 16, 2026 |
| [CONTRIBUTING.md](https://github.com/espressif/pytest-embedded/blob/main/CONTRIBUTING.md "CONTRIBUTING.md") | [CONTRIBUTING.md](https://github.com/espressif/pytest-embedded/blob/main/CONTRIBUTING.md "CONTRIBUTING.md") | [docs: improve contributing guide](https://github.com/espressif/pytest-embedded/commit/b9cda6bd3b8bbb4c322e0673eeb496ee7d06e15e "docs: improve contributing guide") | 2 years agoApr 29, 2024 |
| [LICENSE](https://github.com/espressif/pytest-embedded/blob/main/LICENSE "LICENSE") | [LICENSE](https://github.com/espressif/pytest-embedded/blob/main/LICENSE "LICENSE") | [chore: add license for the repo](https://github.com/espressif/pytest-embedded/commit/e59c7f6a520a65e90c6b51a692e1283d672a250a "chore: add license for the repo") | 2 years agoNov 14, 2024 |
| [README.md](https://github.com/espressif/pytest-embedded/blob/main/README.md "README.md") | [README.md](https://github.com/espressif/pytest-embedded/blob/main/README.md "README.md") | [docs: small fixes](https://github.com/espressif/pytest-embedded/commit/e5d06e03d5e3725412f7e12349e93fb7f0bc2fca "docs: small fixes") | 3 months agoNov 6, 2025 |
| [all\_local\_packages.txt](https://github.com/espressif/pytest-embedded/blob/main/all_local_packages.txt "all_local_packages.txt") | [all\_local\_packages.txt](https://github.com/espressif/pytest-embedded/blob/main/all_local_packages.txt "all_local_packages.txt") | [feat(wokwi): C5 support + add wokwi to local packages](https://github.com/espressif/pytest-embedded/commit/bb0152ada60bcb07cb8a5b63bd07fb604829a7c6 "feat(wokwi): C5 support + add wokwi to local packages") | 2 months agoDec 12, 2025 |
| [conftest.py](https://github.com/espressif/pytest-embedded/blob/main/conftest.py "conftest.py") | [conftest.py](https://github.com/espressif/pytest-embedded/blob/main/conftest.py "conftest.py") | [bump: drop python 3.7, 3.8, 3.9](https://github.com/espressif/pytest-embedded/commit/2879ad3834a07ac2061a6f218b3a015f3ce7d7d8 "bump: drop python 3.7, 3.8, 3.9") | 5 months agoSep 9, 2025 |
| [foreach.sh](https://github.com/espressif/pytest-embedded/blob/main/foreach.sh "foreach.sh") | [foreach.sh](https://github.com/espressif/pytest-embedded/blob/main/foreach.sh "foreach.sh") | [Add support for NuttX RTOS, with optional support for Espressif devices.](https://github.com/espressif/pytest-embedded/commit/b4c564ba2c584a96d89a607be3b258fdb78a1b52 "Add support for NuttX RTOS, with optional support for Espressif devices.  Squashed commits: Main pytest_embedded modifications to support Nuttx Binary test files for nuttx Created Nuttx App Added serial module of NuttX Added DUT for Nuttx Fixes on nuttx serial Added nuttx example General fixes + docs Dut now has return code method Fixed return code issues. Added write_and_return Return code now waits for nsh ready Added short delay after write to obtain nsh prompt Checking filename at the stem instead of full path Skipping 'merged' files Target is passed to App in dut_factory Debug app path Documentation update General fixes Documentation update Improved nsh prompt parse") | 2 years agoNov 12, 2024 |
| [pyproject.toml](https://github.com/espressif/pytest-embedded/blob/main/pyproject.toml "pyproject.toml") | [pyproject.toml](https://github.com/espressif/pytest-embedded/blob/main/pyproject.toml "pyproject.toml") | [bump: version 2.5.0 → 2.6.0](https://github.com/espressif/pytest-embedded/commit/5a9f31836a0ecda03f2155044d28c436a3f59f6e "bump: version 2.5.0 → 2.6.0") | last monthJan 16, 2026 |
| [requirements.txt](https://github.com/espressif/pytest-embedded/blob/main/requirements.txt "requirements.txt") | [requirements.txt](https://github.com/espressif/pytest-embedded/blob/main/requirements.txt "requirements.txt") | [build: move to pyproject.toml and flit](https://github.com/espressif/pytest-embedded/commit/1a7774f4f001173491526621c0b6a9ff00d26b25 "build: move to pyproject.toml and flit") | 3 years agoJun 8, 2023 |
| [ruff.toml](https://github.com/espressif/pytest-embedded/blob/main/ruff.toml "ruff.toml") | [ruff.toml](https://github.com/espressif/pytest-embedded/blob/main/ruff.toml "ruff.toml") | [bump: drop python 3.7, 3.8, 3.9](https://github.com/espressif/pytest-embedded/commit/2879ad3834a07ac2061a6f218b3a015f3ce7d7d8 "bump: drop python 3.7, 3.8, 3.9") | 5 months agoSep 9, 2025 |
| View all files |

## Repository files navigation

# pytest-embedded

[Permalink: pytest-embedded](https://github.com/espressif/pytest-embedded#pytest-embedded)

[![Documentation Status](https://camo.githubusercontent.com/25cc9fa8b2719ec0327d9d808c8d3a875646829d253adffa0f2ad972319e3260/68747470733a2f2f72656164746865646f63732e636f6d2f70726f6a656374732f6573707265737369662d7079746573742d656d6265646465642f62616467652f3f76657273696f6e3d6c6174657374)](https://docs.espressif.com/projects/pytest-embedded/en/latest/?badge=latest)[![Python 3.10+](https://camo.githubusercontent.com/1aa4b7423c1387ab3ad17d58c87a9fc75d08c6cadcdf79449363f10f076eee8a/68747470733a2f2f696d672e736869656c64732e696f2f707970692f707976657273696f6e732f7079746573742d656d626564646564)](https://camo.githubusercontent.com/1aa4b7423c1387ab3ad17d58c87a9fc75d08c6cadcdf79449363f10f076eee8a/68747470733a2f2f696d672e736869656c64732e696f2f707970692f707976657273696f6e732f7079746573742d656d626564646564)

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

## Installation

[Permalink: Installation](https://github.com/espressif/pytest-embedded#installation)

[![pytest-embedded](https://camo.githubusercontent.com/59b62de6fc5ad271c10438c46db843151becc8522009b4f1b6fec0bc3860bd4e/68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f7079746573742d656d6265646465643f636f6c6f723d677265656e266c6162656c3d7079746573742d656d626564646564)](https://pypi.org/project/pytest-embedded/)[![pytest-embedded-serial](https://camo.githubusercontent.com/6fa84bdf27b13a59cd1bb6415646c9c6cc6fbede7af499ceddd6f23ebde370df/68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f7079746573742d656d6265646465642d73657269616c3f636f6c6f723d677265656e266c6162656c3d7079746573742d656d6265646465642d73657269616c)](https://pypi.org/project/pytest-embedded-serial/)[![pytest-embedded-serial-esp](https://camo.githubusercontent.com/b9fd1be02fc4b4ed6580fdbe1f216fc4bccd7ff5ea679c9d5c988ca1c9164517/68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f7079746573742d656d6265646465642d73657269616c2d6573703f636f6c6f723d677265656e266c6162656c3d7079746573742d656d6265646465642d73657269616c2d657370)](https://pypi.org/project/pytest-embedded-serial-esp/)[![pytest-embedded-idf](https://camo.githubusercontent.com/cae52cfc32d493e131dc95a50f24dc0dc7f7a8644c0e9bbae91243ecd6903e71/68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f7079746573742d656d6265646465642d6964663f636f6c6f723d677265656e266c6162656c3d7079746573742d656d6265646465642d696466)](https://pypi.org/project/pytest-embedded-idf/)[![pytest-embedded-qemu](https://camo.githubusercontent.com/019d0fb499291a42c6343f65ea5ce48dee4d547fd7d8436f4493d0283b41f02c/68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f7079746573742d656d6265646465642d71656d753f636f6c6f723d677265656e266c6162656c3d7079746573742d656d6265646465642d71656d75)](https://pypi.org/project/pytest-embedded-qemu/)[![pytest-embedded-arduino](https://camo.githubusercontent.com/69aa29f0b546ae3015986e207f6bf112ee937eb91bec72f9da07a84b32d9b61a/68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f7079746573742d656d6265646465642d61726475696e6f3f636f6c6f723d677265656e266c6162656c3d7079746573742d656d6265646465642d61726475696e6f)](https://pypi.org/project/pytest-embedded-arduino/)[![pytest-embedded-wokwi](https://camo.githubusercontent.com/c9e9d9e3132d6d33d712035a408e5cf917fa52d88a34d5aa65071ac7a7d6f908/68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f7079746573742d656d6265646465642d776f6b77693f636f6c6f723d677265656e266c6162656c3d7079746573742d656d6265646465642d776f6b7769)](https://pypi.org/project/pytest-embedded-wokwi/)[![pytest-embedded-nuttx](https://camo.githubusercontent.com/79cbdae954dd1a64ae1791127e403596444ba9e4e1e227f4a4545869a8c02e42/68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f7079746573742d656d6265646465642d6e757474783f636f6c6f723d677265656e266c6162656c3d7079746573742d656d6265646465642d6e75747478)](https://pypi.org/project/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 `~=2.0` to get rid of breaking changes, and use the latest new features. For example,

```
pip install -U pytest-embedded~=2.0
```

## Quickstart

[Permalink: Quickstart](https://github.com/espressif/pytest-embedded#quickstart)

- `pip install -U pytest-embedded~=2.0`
- Create a file `test_basic.py`

```
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')
```

- Run the test with `pytest`, the result would be like:

```
collected 1 item

test_basic.py .                                                        [100%]

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

- if run with `pytest -s`, the output would be as follows:

```
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

[Permalink: Extra Services](https://github.com/espressif/pytest-embedded#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:

- `serial`: serial port utilities.
- `esp`: auto-detect target/port by [esptool](https://github.com/espressif/esptool).
- `idf`: auto-detect more app info with [ESP-IDF](https://github.com/espressif/esp-idf) specific rules, auto-flash the binary into the target.
- `jtag`: openocd/gdb utilities
- `qemu`: running test cases on QEMU instead of the real target.
- `arduino`: auto-detect more app info with [arduino](https://github.com/arduino/Arduino) specific rules, auto-flash the binary into the target.
- `wokwi`: running test cases with [Wokwi](https://wokwi.com/) instead of the real target.
- `nuttx`: service for [nuttx](https://nuttx.apache.org/) project, optionally with espressif devices.

## Resources

[Permalink: Resources](https://github.com/espressif/pytest-embedded#resources)

- Documentation is hosted at [https://docs.espressif.com/projects/pytest-embedded/en/latest/](https://docs.espressif.com/projects/pytest-embedded/en/latest/)
- More examples under [examples](https://github.com/espressif/pytest-embedded/tree/main/examples)

## About

A pytest plugin that designed for embedded testing


[docs.espressif.com/projects/pytest-embedded/en/latest/](https://docs.espressif.com/projects/pytest-embedded/en/latest/ "https://docs.espressif.com/projects/pytest-embedded/en/latest/")

### Topics

[testing](https://github.com/topics/testing "Topic: testing") [embedded](https://github.com/topics/embedded "Topic: embedded") [pytest](https://github.com/topics/pytest "Topic: pytest")

### Resources

[Readme](https://github.com/espressif/pytest-embedded#readme-ov-file)

### License

[View license](https://github.com/espressif/pytest-embedded#License-1-ov-file)

### Contributing

[Contributing](https://github.com/espressif/pytest-embedded#contributing-ov-file)

### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/espressif/pytest-embedded).

[Activity](https://github.com/espressif/pytest-embedded/activity)

[Custom properties](https://github.com/espressif/pytest-embedded/custom-properties)

### Stars

[**128**\\
stars](https://github.com/espressif/pytest-embedded/stargazers)

### Watchers

[**8**\\
watching](https://github.com/espressif/pytest-embedded/watchers)

### Forks

[**36**\\
forks](https://github.com/espressif/pytest-embedded/forks)

[Report repository](https://github.com/contact/report-content?content_url=https%3A%2F%2Fgithub.com%2Fespressif%2Fpytest-embedded&report=espressif+%28user%29)

## [Releases](https://github.com/espressif/pytest-embedded/releases)

[126tags](https://github.com/espressif/pytest-embedded/tags)

## [Packages\  0](https://github.com/orgs/espressif/packages?repo_name=pytest-embedded)

No packages published

### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/espressif/pytest-embedded).

## [Contributors\  24](https://github.com/espressif/pytest-embedded/graphs/contributors)

- [![@hfudev](https://avatars.githubusercontent.com/u/23117153?s=64&v=4)](https://github.com/hfudev)
- [![@horw](https://avatars.githubusercontent.com/u/47724762?s=64&v=4)](https://github.com/horw)
- [![@urish](https://avatars.githubusercontent.com/u/892318?s=64&v=4)](https://github.com/urish)
- [![@JakubAndrysek](https://avatars.githubusercontent.com/u/33494544?s=64&v=4)](https://github.com/JakubAndrysek)
- [![@Ouss4](https://avatars.githubusercontent.com/u/12075908?s=64&v=4)](https://github.com/Ouss4)
- [![@alekseiapa](https://avatars.githubusercontent.com/u/71771058?s=64&v=4)](https://github.com/alekseiapa)
- [![@lucasssvaz](https://avatars.githubusercontent.com/u/32426024?s=64&v=4)](https://github.com/lucasssvaz)
- [![@dependabot[bot]](https://avatars.githubusercontent.com/in/29110?s=64&v=4)](https://github.com/apps/dependabot)
- [![@fdcavalcanti](https://avatars.githubusercontent.com/u/37779557?s=64&v=4)](https://github.com/fdcavalcanti)
- [![@P-R-O-C-H-Y](https://avatars.githubusercontent.com/u/90197375?s=64&v=4)](https://github.com/P-R-O-C-H-Y)
- [![@pre-commit-ci[bot]](https://avatars.githubusercontent.com/in/68672?s=64&v=4)](https://github.com/apps/pre-commit-ci)
- [![@igrr](https://avatars.githubusercontent.com/u/4349050?s=64&v=4)](https://github.com/igrr)
- [![@Harshal5](https://avatars.githubusercontent.com/u/51528083?s=64&v=4)](https://github.com/Harshal5)
- [![@erhankur](https://avatars.githubusercontent.com/u/43336369?s=64&v=4)](https://github.com/erhankur)

[\+ 10 contributors](https://github.com/espressif/pytest-embedded/graphs/contributors)

## Languages

- [Python99.5%](https://github.com/espressif/pytest-embedded/search?l=python)
- Other0.5%

You can’t perform that action at this time.