YAML文件做参数化,使用python 读取

创建一个LOGIN.YAML

- name: “张三”
  pwd: 123456
- name: "李四"
  pwd: 123456

在另一个类中读取YAML文件:使用yaml读取,首先需要pip install Pyaml包,才能导入yaml模块

import yaml


def test_yaml(path):
    with open(path, "r", encoding="utf-8") as f:
        stream= f.read()
        return yaml.load(stream, yaml.FullLoader)

在类中调用,作为参数化:

class TestCase:

    @pytest.mark.parametrize("a", test_yaml("/login.yaml"))
    def test_01(self, a):
        print(a.get("name"))
        print(a.get("pwd"))

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个关于Python使用parametrize驱动YAML文件参数的问题。对于这个问题,我可以给出以下回答: 在pytest中,我们可以使用@parametrize装饰器来驱动测试用例参数,从而避免编写大量重复的测试代码。而使用YAML文件来存储测试数据和参数,则可以进一步提高测试代码的可读性和可维护性。 具体实现可以参考以下步骤: 1. 创建YAML文件来存储测试数据和参数 例如,我们可以创建一个名为test_data.yaml文件,用于存储测试数据和参数,格式如下: ``` - name: test_case_1 input: [1, 2] expect: 3 - name: test_case_2 input: [10, 20] expect: 30 ``` 其中,name表示测试用例的名称,input表示测试用例的输入参数,expect表示测试用例的预期输出结果。需要注意的是,input参数需要以列表的形式给出。 2. 在测试代码中使用@parametrize装饰器来驱动测试用例参数 例如,我们可以创建一个名为test_calc.py的测试文件,用于测试一个加法函数,代码如下: ``` import yaml import pytest def add(x, y): return x + y with open('test_data.yaml') as f: test_data = yaml.safe_load(f) @pytest.mark.parametrize("input_data, expect", [(data['input'], data['expect']) for data in test_data], ids=[data['name'] for data in test_data]) def test_calc(input_data, expect): assert add(*input_data) == expect ``` 在这个测试代码中,我们首先使用yaml.safe_load()函数读取test_data.yaml文件中的数据,然后使用列表推导式将测试数据和参数转换成@parametrize装饰器所需的格式,并使用ids参数为每个测试用例命名。最后,我们在test_calc测试函数中直接使用input_data和expect参数即可。 3. 运行测试代码 在终端中进入到测试文件所在的目录,运行以下命令即可执行测试: ``` pytest test_calc.py ``` 总的来说,使用Python中@parametrize装饰器驱动YAML文件参数是一种方便、可读性高、可维护性高的测试方法,可以大大提高测试代码的效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值