blob: 4fb4eea11fcc68c68aa15f01b6873c1843b06bc2 [file] [log] [blame]
.. 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
...