首页 > 解决方案 > Pyyaml 条件语句

问题描述

在下面的代码中,我需要提供多个案例名称。例如: 如果 j["case_name"] == "login" 和 "deploy"给出 "login" 和 "deploy" 案例名称 ,然后将两者的启用值更改为False是否可能?或者还有其他方法可以将多个案例名称的启用值更改为 false。

    import yaml

y = yaml.safe_load(open("data.yaml", "r")) 

for i in y["tiers"]:
    for j in i["testcases"]:
        if j["case_name"] == "login":
            j["enabled"] = False

yaml.dump(y, open("new_data.yaml", "x"))





Below  is the content from YAML file
    tiers:
    -
        name: testing
        order: 1
        description: ''
        testcases:
            -
                case_name: deploy
                project_name: project
                enabled: true
                criteria: 100
                blocking: false
                clean_flag: false
                description: ''
                run:
                    name: 'deploy'
    
            -
                case_name: login
                project_name: project
                enabled: true
                criteria: 100
                blocking: false
                clean_flag: false
                description: ''
                run:
                    name: 'login'

标签: pythonyamlpyyaml

解决方案


我不完全确定这是你想要的,但听起来你想做

for i in y["tiers"]:
    for j in i["testcases"]:
        if j["case_name"] in ["login", "deploy"]:
            j["enabled"] = False

我建议用散文描述你想做的事情,而不是给出误导性的伪代码,因为在这种情况下逻辑并且没有任何意义——你很可能想要一个逻辑的or,这就是这段代码实现的。


推荐阅读