diff --git a/docs/cli_commands.md b/docs/cli_commands.md index 520da06c4..01241b00d 100644 --- a/docs/cli_commands.md +++ b/docs/cli_commands.md @@ -481,5 +481,20 @@ This command runs the python test suite. If you make changes to python code you **Usage**: ``` -qmk pytest +qmk pytest [-t TEST] ``` + +**Examples**: + +Run entire test suite: + + qmk pytest + +Run test group: + + qmk pytest -t qmk.tests.test_cli_commands + +Run single test: + + qmk pytest -t qmk.tests.test_cli_commands.test_c2json + qmk pytest -t qmk.tests.test_qmk_path diff --git a/lib/python/qmk/cli/pytest.py b/lib/python/qmk/cli/pytest.py index a7f01a872..2e4a0a9f0 100644 --- a/lib/python/qmk/cli/pytest.py +++ b/lib/python/qmk/cli/pytest.py @@ -7,11 +7,12 @@ from subprocess import DEVNULL from milc import cli +@cli.argument('-t', '--test', arg_only=True, action='append', default=[], help="Mapped to nose2 'testNames' positional argument - https://docs.nose2.io/en/latest/usage.html#specifying-tests-to-run") @cli.subcommand('QMK Python Unit Tests', hidden=False if cli.config.user.developer else True) def pytest(cli): """Run several linting/testing commands. """ - nose2 = cli.run(['nose2', '-v'], capture_output=False, stdin=DEVNULL) + nose2 = cli.run(['nose2', '-v', '-t' 'lib/python', *cli.args.test], capture_output=False, stdin=DEVNULL) flake8 = cli.run(['flake8', 'lib/python'], capture_output=False, stdin=DEVNULL) return flake8.returncode | nose2.returncode