README.rst
1.. zephyr:code-sample:: pytest_shell
2 :name: Pytest shell application testing
3
4 Execute pytest tests against the Zephyr shell.
5
6Overview
7********
8
9The sample project illustrates usage of pytest framework integrated with
10Twister test runner.
11
12A simple application provides basic Zephyr shell interface. Twister builds it
13and then calls pytest in subprocess which runs tests from
14``pytest/test_shell.py`` file. The first test verifies valid response for
15``help`` command, second one verifies if application is able to return
16information about used kernel version. Both tests use ``shell`` fixture, which
17is defined in ``pytest-twister-harness`` plugin. More information about plugin
18can be found :ref:`here <integration_with_pytest>`.
19
20Requirements
21************
22
23Board (hardware, ``native_sim`` or ``QEMU``) with UART console.
24
25Building and Running
26********************
27
28Build and run sample by Twister:
29
30.. code-block:: console
31
32 $ ./scripts/twister -vv --platform native_sim -T samples/subsys/testsuite/pytest/shell
33
34
35Sample Output
36=============
37
38.. code-block:: console
39
40 ...
41 samples/subsys/testsuite/pytest/shell/pytest/test_shell.py::test_shell_print_help
42 INFO: send "help" command
43 DEBUG: #: uart:~$ help
44 DEBUG: #: Please press the <Tab> button to see all available commands.
45 DEBUG: #: You can also use the <Tab> button to prompt or auto-complete all commands or its subcommands.
46 DEBUG: #: You can try to call commands with <-h> or <--help> parameter for more information.
47 DEBUG: #: Shell supports following meta-keys:
48 DEBUG: #: Ctrl + (a key from: abcdefklnpuw)
49 DEBUG: #: Alt + (a key from: bf)
50 DEBUG: #: Please refer to shell documentation for more details.
51 DEBUG: #: Available commands:
52 DEBUG: #: clear :Clear screen.
53 DEBUG: #: device :Device commands
54 DEBUG: #: devmem :Read/write physical memory
55 DEBUG: #: Usage:
56 DEBUG: #: Read memory at address with optional width:
57 DEBUG: #: devmem address [width]
58 DEBUG: #: Write memory at address with mandatory width and value:
59 DEBUG: #: devmem address <width> <value>
60 DEBUG: #: help :Prints the help message.
61 DEBUG: #: history :Command history.
62 DEBUG: #: kernel :Kernel commands
63 DEBUG: #: rem :Ignore lines beginning with 'rem '
64 DEBUG: #: resize :Console gets terminal screen size or assumes default in case the
65 DEBUG: #: readout fails. It must be executed after each terminal width change
66 DEBUG: #: to ensure correct text display.
67 DEBUG: #: retval :Print return value of most recent command
68 DEBUG: #: shell :Useful, not Unix-like shell commands.
69 DEBUG: #: uart:~$
70 INFO: response is valid
71 PASSED
72 samples/subsys/testsuite/pytest/shell/pytest/test_shell.py::test_shell_print_version
73 INFO: send "kernel version" command
74 DEBUG: #: uart:~$ kernel version
75 DEBUG: #: Zephyr version 3.5.99
76 DEBUG: #: uart:~$
77 INFO: response is valid
78 PASSED
79 ...
80