如何传递从pytest中的命令行参数获取参数的函数?

2024-04-28 11:49:01 发布

您现在位置:Python中文网/ 问答频道 /正文

如何传递从pytest参数化fixture中的命令行参数获取参数的函数?我这样做是因为取决于部门,我从yaml文件中获取相关测试,我希望将其传递给参数化

test_run.py

def getTests(dept):        
    for dept_test in dept_test_info[dept]["test"]:        
        allowed_tests.append(dept_test)     
return allowed_tests

@pytest.mark.parametrize("test",getTests(dept))

但我希望在运行pytest时dept作为命令行参数出现

python pytest test\u run.py--dept=“anydept”


Tags: 文件函数run命令行pytestyaml参数
1条回答
网友
1楼 · 发布于 2024-04-28 11:49:01

这个问题有两个答案:

  1. 您可以使用环境变量将参数传递给测试代码

  2. 你根本不应该这样做。理想情况下,测试不应该依赖于更改值,除非测试代码本身正在创建它们(使用random()或类似的方法是可以的,但测试用户传递的不是随机参数)。相反,让您的测试代码包含您要测试的所有部门:

def getTests():   
    test_departments = ["accounting", "hr" "research and design", "engineering"]    
    for dept in my_departments: 
        for dept_test in dept_test_info[dept]["test"]:        
            allowed_tests.append(dept_test)     
return allowed_tests

@pytest.mark.parametrize("test",getTests(dept))

相关问题 更多 >