我正在使用pytest、boto3和aws,并希望使用参数化测试进行动态断言。如何改进此代码,使其仅在特定的子网组上断言
production_private_ids = ["subnet-08f6d70b65b5cxx38", "subnet-0b6aaaf1ce207xx03", "subnet-0e54fda8f811fxxd8"]) ....
nonproduction_private_ids = ["subnet-11f6xx0b65b5cxx38", "subnet-116aaaf1ce207xx99", "subnet-11xxfda8f811fxx77"]) ....
@pytest.mark.parametrize("subnet", ["production_private_ids", "nonproduction_private_ids", "nonproduction_public_ids","production_public_ids ")
# if environment = production, then only check if production_private_ids exists in team_subnet
def test_sharing_subnets_exist(subnet,accountid):
team_subnet = get_team_subnets(accountid)
assert subnet in team_subnet
# if environment = nonproduction, then only check if nonproduction_private_ids exists in team_subnet
def test_sharing_subnets_exist(subnet,accountid):
team_subnet = get_team_subnets(accountid)
assert subnet in team_subnet
一种常见的做法是设置和读取环境变量,以确定运行的平台
例如,在环境中可以有一个变量
isProduction=1
。然后在代码中,您可以通过os.environ['isProduction'] == 1
进行检查出于安全等原因,您甚至可以在环境中保存私有ID。 例如,在环境中,可以在非生产上使用以下变量
另一套在生产机器上
在你做的代码中
因此,您将获得每台机器上的配置。只需确保在您的工作流/测试流中环境变量的来源正确
如果需要在参数化上执行其他逻辑,可以通过metafunc参数化测试。例如:
现在运行
pytest ...
将只检查非生产ID,而NAME="production" pytest ...
将只检查生产ID相关问题 更多 >
编程相关推荐