Getting started with parameterization#
In the most simple case, a single parameter is defined, as demonstrated in the example paramterize/parameterize1.pyt:
# Copyright NTESS. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: MIT
import sys
import canary
canary.directives.parameterize("a", (1, 4))
def test():
self = canary.get_instance()
print(f"{self.parameters.a}")
return 0
if __name__ == "__main__":
sys.exit(test())
The test file generates two test cases with parameters a=1 and a=4, respectively:
$ canary describe parameterize/parameterize1.pyt
--- parameterize1 ------------
File: /home/docs/checkouts/readthedocs.org/user_builds/canary-wm/checkouts/release-26.4.16/src/canary/examples/parameterize/parameterize1.pyt
Keywords:
2 test specs using on_options=:
├── parameterize1.a=1
└── parameterize1.a=4
When the test file is run, each case is executed in its own uniquely named directory:
$ canary run parameterize/parameterize1.pyt
INFO: Initializing empty canary workspace at .
INFO: Collecting generator files from parameterize
INFO: Instantiating generators from collected files
INFO: Generating test specs from generators
INFO: Searching for duplicated tests
INFO: Resolving test spec dependencies
INFO: Generated 2 test specs from 1 generators
INFO: Caching test specs
INFO: Created selection 'noble-lemur'
INFO: Selecting test cases based on runtime environment
INFO: Starting session 2026-04-21T15-34-31.778974
INFO: Starting process pool with max 2 workers
Job ID Status Queued Elapsed Rank
────────────────────────────────────────────────────────────────────────────────────────────────────────
parameterize1.a=4 5447e99 SUBMITTED 2/2
parameterize1.a=4 5447e99 STARTED 0.3s 2/2
parameterize1.a=1 2ef95a7 SUBMITTED 1/2
parameterize1.a=1 2ef95a7 STARTED 0.3s 1/2
parameterize1.a=1 2ef95a7 PASS (SUCCESS) 0.3s 0.5s 1/2
parameterize1.a=4 5447e99 PASS (SUCCESS) 0.3s 0.5s 2/2
INFO: 2/2 tests finished with status PASS
INFO: Finished session in 0.55 s. with returncode 0
INFO: Updating view at /home/docs/checkouts/readthedocs.org/user_builds/canary-wm/checkouts/release-26.4.16/src/canary/examples/TestResults
$ ls -F TestResults/
VIEW.TAG
parameterize1.a=1@
parameterize1.a=4@
Test directories are generally named $family.$param_1=$value_1...$param_n=$value_n, where family is (usually) the basename of the test file.