Combining multiple parameter sets#
If multiple parameterize directives are issued in the same test file, the cartesian product of parameters is performed:
# Copyright NTESS. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: MIT
import sys
import canary
canary.directives.parameterize("a", (1, 4))
canary.directives.parameterize("b", (1.0e5, 1.0e6, 1.0e7))
def test():
self = canary.test.instance
print(f"running test with {self.parameters.a=} and {self.parameters.b=}")
if __name__ == "__main__":
sys.exit(test())
$ canary describe parameterize/parameterize3.pyt
--- parameterize3 ------------
File: /home/docs/checkouts/readthedocs.org/user_builds/canary-wm/checkouts/latest/src/canary/examples/parameterize/parameterize3.pyt
Keywords:
6 test specs using on_options=:
├── parameterize3.a=1.b=100000
├── parameterize3.a=1.b=1e+06
├── parameterize3.a=1.b=1e+07
├── parameterize3.a=4.b=100000
├── parameterize3.a=4.b=1e+06
└── parameterize3.a=4.b=1e+07
Similarly,
# Copyright NTESS. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: MIT
import sys
import canary
canary.directives.parameterize("a,b", [(1, 1e5), (2, 1e6), (3, 1e7)])
canary.directives.parameterize("cpus", (4, 8))
def test():
self = canary.test.instance
print(f"running test with {self.parameters.a=}, {self.parameters.b=}, {self.parameters.cpus=}")
if __name__ == "__main__":
sys.exit(test())
results in the following 6 test cases:
$ canary describe parameterize/parameterize4.pyt
--- parameterize4 ------------
File: /home/docs/checkouts/readthedocs.org/user_builds/canary-wm/checkouts/latest/src/canary/examples/parameterize/parameterize4.pyt
Keywords:
6 test specs using on_options=:
├── parameterize4.a=1.b=100000.cpus=4
├── parameterize4.a=1.b=100000.cpus=8
├── parameterize4.a=2.b=1e+06.cpus=4
├── parameterize4.a=2.b=1e+06.cpus=8
├── parameterize4.a=3.b=1e+07.cpus=4
└── parameterize4.a=3.b=1e+07.cpus=8