test: uthelper now generates one test function per test case (#11636)

This commit is contained in:
Alexei Znamensky
2026-03-22 14:42:10 +13:00
committed by GitHub
parent b4336659f6
commit 1dfc4fed40

View File

@@ -68,24 +68,25 @@ class UTHelper:
return Runner(self.ansible_module.main) return Runner(self.ansible_module.main)
def set_test_func(self): def set_test_func(self):
@pytest.mark.parametrize("test_case", self.test_cases, ids=[tc.id for tc in self.test_cases]) def make_test_func(tc):
@pytest.mark.usefixtures(*self.fixtures) @pytest.mark.usefixtures(*self.fixtures)
def _test_module(mocker, capfd, patch_ansible_module_uthelper, test_case): def _test_func(mocker, capfd, patch_ansible_module_uthelper):
""" args = {}
Run unit tests for each test case in self.test_cases args.update(tc.input)
""" if tc.flags.get("check"):
args = {} args["_ansible_check_mode"] = tc.flags.get("check")
args.update(test_case.input) if tc.flags.get("diff"):
if test_case.flags.get("check"): args["_ansible_diff"] = tc.flags.get("diff")
args["_ansible_check_mode"] = test_case.flags.get("check") with patch_ansible_module_uthelper(args):
if test_case.flags.get("diff"): self.runner.run(mocker, capfd, tc)
args["_ansible_diff"] = test_case.flags.get("diff")
with patch_ansible_module_uthelper(args):
self.runner.run(mocker, capfd, test_case)
self.add_func_to_test_module("test_module", _test_module) return _test_func
return _test_module for test_case in self.test_cases:
func_name = test_case.id if test_case.id.startswith("test_") else f"test_{test_case.id}"
if hasattr(self.test_module, func_name):
raise ValueError(f"Name conflict: '{func_name}' already exists in module '{self.test_module.__name__}'")
self.add_func_to_test_module(func_name, make_test_func(test_case))
def set_fixtures(self, fixtures): def set_fixtures(self, fixtures):
for name, fixture in fixtures.items(): for name, fixture in fixtures.items():