我想创建一个PyTest,它根据env验证我的文件夹是否存在。
是否可以使用parameterize为每个文件夹创建一个单独的测试?
env | 文件夹 |
---|---|
dev | dev_data |
dev | 日志 |
dev | 调试 |
产品 | prod_data |
您可以使用dict
(本例中为FOLDERS
(来存储测试值,并定义一个方法(本例为get_items
(来通过生成器对其进行扩展,该生成器可以直接传递给@pytest.mark.parametrize
装饰器。下面是一个工作示例。
import pytest
FOLDERS = {"dev": ["dev_data", "logs", "debug"], "prod": ["prod_data"]}
def get_items():
for key, value in FOLDERS.items():
for val in value:
yield key, val
@pytest.mark.parametrize("env, folder", get_items())
def test_are_folders_exist(env, folder):
print(f"Checking folder {folder} on env {env}...")
expected_folders = get_folders(env)
assert folder in expected_folders
def get_folders(env):
# just for the example, it should be the method to be tested
return FOLDERS.get(env)
它给出了这个输出。
pytest -s folders.py
# fixture.py Checking folder dev_data on env dev...
# .Checking folder logs on env dev...
# .Checking folder debug on env dev...
# .Checking folder prod_data on env prod...
# .