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.