预习笔记03-yaml参数化&数据驱动

  • pytest数据参数化(数据量小的数据驱动)

1、基本形式:@pytest.mark.parametrize(argnames, argvalues)
argnames:要参数化的变量名,string(逗号分隔),list,tuple
argvalues:要参数化的变量值,list,list[tuple]
2、使用 string

class TestParams():

    @pytest.mark.parametrize("a, b", [(10, 20), (10, 30)])
    def test_param(self, a, b):
        print(a + b)

3、使用 list

    @pytest.mark.parametrize(["a", "b"], [(10,20), (10,30)])
    def test_param(self, a, b):
        print(a + b)

4、使用 tuple

    @pytest.mark.parametrize(("a","b"),[(10,20), (10,30)])
    def test_param(self, a, b):
        print(a + b)
  • yaml数据参数化(数据量大的数据驱动)

1、yaml实现列表

list: [(10, 20), (10, 30)]

-
  - 10
  - 20
-
  - 10
  - 30

2、yaml实现字典

dict: {by: id, locator: name, action: click}

  by: id
  locator: name
  action: click

3、yaml进行嵌套(实现二维数组)

  -
    id: 1
    name: company1
    price: 200W
  -
    id: 2
    name: company2
    price: 500W

companies: [{id:1, name: company1, price:200W}, {id:2, name: company3, price:500W}]

  • yaml 与pytest联用

1、yaml安装
方式一:命令 pip install pyyaml
方式二:在Pycharm的 Settings-Project Intepreter 中安装

2、加载yaml文件

yaml.safe_load(open("./data.yaml"))

    @pytest.mark.parametrize(["a", "b"], yaml.safe_load(open("./data.yaml")))
    def test_param(self, a, b):
        print(a + b)
  • 数据驱动 – 参数化的应用
    – 数据驱动就是由数据的改变驱动自动化测试的执行,最终引起测试结果的改变。
    – 数据量小:可使用 代码参数化 实现数据驱动
    – 数据量大:使用结构化的文件(如yaml、json等)对数据进行存储,再在测试用例中读取

应用场景:APP、Web、接口自动化测试
①测试步骤的数据驱动
②测试数据的数据驱动
③配置的数据驱动

class TestDemo():
    @pytest.mark.parametrize("env", yaml.safe_load(open("./env.yml")))
    def test_demo(self, env):
        if "test" in env:
            print("这是测试环境")
            # yaml文件为字典格式,读取时只能读取出key名;读取value需将文件数据改为列表格式
            print("测试环境的ip是:", env["test"])
        elif "dev" in env:
            print("这是开发环境")
            print("开发环境的ip是:", env["dev"])
    def test_yaml(self):
        print(yaml.safe_load(open("./env.yml")))
2 个赞