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/latest/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 'focused-lark'
INFO: Selecting test jobs based on runtime environment
INFO: Starting session 2026-06-04T20-43-20.836337
INFO: Starting process pool with max 1 workers
Job ID Status Elapsed Rank
──────────────────────────────────────────────────────────────────────────────────────────────
parameterize1.a=1 76f0570 SUBMITTED 1/2
parameterize1.a=1 76f0570 STARTED 1/2
parameterize1.a=1 76f0570 PASS (SUCCESS) 0.7s 1/2
parameterize1.a=4 bd89527 SUBMITTED 2/2
parameterize1.a=4 bd89527 STARTED 2/2
parameterize1.a=4 bd89527 PASS (SUCCESS) 0.4s 2/2
INFO: 2/2 tests finished with status PASS
INFO: Finished session in 1.26 s. with returncode 0
INFO: Updating view at /home/docs/checkouts/readthedocs.org/user_builds/canary-wm/checkouts/latest/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.
VIEW.TAG
parameterize1.a=1@
parameterize1.a=4@