zephyr/samples/subsys/testsuite/pytest/shell
Duy Nguyen 5ac1e5e39e samples: Add exclusion for twister harness on qemu_rx
The qemu_rx is having issue with twister harness, command cannot
be send from twister test to qemu console, this commit temporary
disable them for further checking

Signed-off-by: Duy Nguyen <duy.nguyen.xa@renesas.com>
2025-06-26 14:07:03 +02:00
..
pytest
src
CMakeLists.txt
prj.conf
README.rst
testcase.yaml samples: Add exclusion for twister harness on qemu_rx 2025-06-26 14:07:03 +02:00

.. zephyr:code-sample:: pytest_shell
   :name: Pytest shell application testing

   Execute pytest tests against the Zephyr shell.

Overview
********

The sample project illustrates usage of pytest framework integrated with
Twister test runner.

A simple application provides basic Zephyr shell interface. Twister builds it
and then calls pytest in subprocess which runs tests from
``pytest/test_shell.py`` file. The first test verifies valid response for
``help`` command, second one verifies if application is able to return
information about used kernel version. Both tests use ``shell`` fixture, which
is defined in ``pytest-twister-harness`` plugin. More information about plugin
can be found :ref:`here <integration_with_pytest>`.

Requirements
************

Board (hardware, ``native_sim`` or ``QEMU``) with UART console.

Building and Running
********************

Build and run sample by Twister:

.. code-block:: console

   $ ./scripts/twister -vv --platform native_sim -T samples/subsys/testsuite/pytest/shell


Sample Output
=============

.. code-block:: console

    ...
    samples/subsys/testsuite/pytest/shell/pytest/test_shell.py::test_shell_print_help
    INFO: send "help" command
    DEBUG: #: uart:~$ help
    DEBUG: #: Please press the <Tab> button to see all available commands.
    DEBUG: #: You can also use the <Tab> button to prompt or auto-complete all commands or its subcommands.
    DEBUG: #: You can try to call commands with <-h> or <--help> parameter for more information.
    DEBUG: #: Shell supports following meta-keys:
    DEBUG: #: Ctrl + (a key from: abcdefklnpuw)
    DEBUG: #: Alt  + (a key from: bf)
    DEBUG: #: Please refer to shell documentation for more details.
    DEBUG: #: Available commands:
    DEBUG: #: clear    :Clear screen.
    DEBUG: #: device   :Device commands
    DEBUG: #: devmem   :Read/write physical memory
    DEBUG: #:             Usage:
    DEBUG: #:             Read memory at address with optional width:
    DEBUG: #:             devmem address [width]
    DEBUG: #:             Write memory at address with mandatory width and value:
    DEBUG: #:             devmem address <width> <value>
    DEBUG: #: help     :Prints the help message.
    DEBUG: #: history  :Command history.
    DEBUG: #: kernel   :Kernel commands
    DEBUG: #: rem      :Ignore lines beginning with 'rem '
    DEBUG: #: resize   :Console gets terminal screen size or assumes default in case the
    DEBUG: #:             readout fails. It must be executed after each terminal width change
    DEBUG: #:             to ensure correct text display.
    DEBUG: #: retval   :Print return value of most recent command
    DEBUG: #: shell    :Useful, not Unix-like shell commands.
    DEBUG: #: uart:~$
    INFO: response is valid
    PASSED
    samples/subsys/testsuite/pytest/shell/pytest/test_shell.py::test_shell_print_version
    INFO: send "kernel version" command
    DEBUG: #: uart:~$ kernel version
    DEBUG: #: Zephyr version 3.5.99
    DEBUG: #: uart:~$
    INFO: response is valid
    PASSED
    ...