From 88542344b98e1c835a2e66593bdcaaf4c2d2a217 Mon Sep 17 00:00:00 2001 From: dosas Date: Thu, 28 Mar 2024 16:10:22 +0100 Subject: [PATCH] Use fixtures instead of finalizers The teardown order was not correct and host was not deleted before hostgroup https://github.com/pytest-dev/pytest/issues/10023#issuecomment-1148514756 --- tests/foreman/api/test_parameters.py | 56 +++++++++++++++++++++------- 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/tests/foreman/api/test_parameters.py b/tests/foreman/api/test_parameters.py index 5d70374a546..9adc4567bb7 100644 --- a/tests/foreman/api/test_parameters.py +++ b/tests/foreman/api/test_parameters.py @@ -14,11 +14,51 @@ import pytest +@pytest.fixture +def param_name(): + return gen_string('alpha') + + +@pytest.fixture +def param_value(): + return gen_string('alpha') + + +@pytest.fixture +def cp(param_name, param_value, module_target_sat): + cp = module_target_sat.api.CommonParameter(name=param_name, value=param_value).create() + + yield cp + + cp.delete() + + +@pytest.fixture +def host(param_name, param_value, module_org, module_location, module_target_sat, cp, hostgroup): + host = module_target_sat.api.Host(organization=module_org, location=module_location).create() + + yield host + + host.delete() + + +@pytest.fixture +def hostgroup(param_name, param_value, module_org, module_target_sat): + hg = module_target_sat.api.HostGroup( + organization=[module_org], + group_parameters_attributes=[{'name': param_name, 'value': param_value}], + ).create() + + yield hg + + hg.delete() + + @pytest.mark.tier1 @pytest.mark.e2e @pytest.mark.upgrade def test_positive_parameter_precedence_impact( - request, module_org, module_location, module_target_sat + request, host, hostgroup, cp, param_name, param_value ): """Check parameter precedences for Global, Hostgroup, and Host parameters @@ -35,23 +75,11 @@ def test_positive_parameter_precedence_impact( :expectedresults: Host parameter take precedence over hostgroup and global parameter, and hostgroup take precedence over global parameter when there are no host parameters """ - param_name = gen_string('alpha') - param_value = gen_string('alpha') - - cp = module_target_sat.api.CommonParameter(name=param_name, value=param_value).create() - request.addfinalizer(cp.delete) - host = module_target_sat.api.Host(organization=module_org, location=module_location).create() - request.addfinalizer(host.delete) result = [res for res in host.all_parameters if res['name'] == param_name] assert result[0]['name'] == param_name assert result[0]['associated_type'] == 'global' - hg = module_target_sat.api.HostGroup( - organization=[module_org], - group_parameters_attributes=[{'name': param_name, 'value': param_value}], - ).create() - request.addfinalizer(hg.delete) - host.hostgroup = hg + host.hostgroup = hostgroup host = host.update(['hostgroup']) result = [res for res in host.all_parameters if res['name'] == param_name] assert result[0]['name'] == param_name