pytest数据参数化和数据驱动yaml的简单使用

Posted 若云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytest数据参数化和数据驱动yaml的简单使用相关的知识,希望对你有一定的参考价值。

Pytest参数化

  • @pytest.mark.parametrize(argnames, argvalues)
  • argnames: 要参数化的变量, string(逗号分隔), list, tuple
  • argvalues: 参数化的值,list, list[tuple]

新建一个 简单的 test_demo.py 代码内容为:

class TestClass:
    @pytest.mark.parametrize(\'a,b\', [(1, 2), (2, 3), (4, 5)])
    def test_a(self, a, b):
        # print(f\'login name is {}\')
        print(a + b)
        print(\'1\')

    def test_b(self):
        print(\'2\')

    def test_c(self, login):
        print(f\'login name is {login}\')
        print(\'3\')
然后在控制台中 输入 上一节 学到的 -k(指定函数) -v(打印详细内容) -s (输出print内容)
pytest -v -k test_a -s

可以看到想要的结果

测试结构化的简单demo

读取yaml文件, 先建立一个数组的demo
yaml的语法 可以参考 https://www.runoob.com/w3cnote/yaml-intro.html

-
  - 10
  - 20
-
  - 30
  - 40

然后建立一个Pytest去读取

import pytest
import yaml

class TestClass:
    @pytest.mark.parametrize(\'a,b\', yaml.safe_load(open(\'env.yml\')))
    def test_a(self, a, b):
        print(a + b)
        print(\'1\')

常常我们需要结构化我们的测试环境,一般配置文件放在yaml中,简单的读取

yml 文件内容:
-
  languages:
    - Ruby
    - Perl
    - Python 
  websites:
    YAML: yaml.org 
    Ruby: ruby-lang.org 
    Python: python.org 
    Perl: use.perl.org

  dev: # 生产环境
    ip: 127.0.0.1

---- # 注意点 当不知道自己写的yml格式对象是否正确的时候可以通过读取出来来验证
class TestClass:
   def test_b(self):
        print(yaml.safe_load(open(\'env.yml\')))
# 然后执行命令行: pytest -v -k test_b -s 就可以看到写的yml

# 下面是读取配置文件的写法,前提是知道自己的yml是什么样子
import pytest
import yaml
class TestClass:
    @pytest.mark.parametrize(\'env\', yaml.safe_load(open(\'env.yml\')))
    def test_a(self, env):
        if "dev" in env:
            # print(env) 可以先打印出来看看 是什么结构
            print(f\'生产环境, ip地址为{env.get("dev").get("ip")}\')
        elif "test" in env:
            print(\'测试环境\')
然后执行命令: pytest -v -k test_a -s 就可以看到执行的结果

下一次随笔写的是测试报告的美化与定制 Allure测试框架的使用

以上是关于pytest数据参数化和数据驱动yaml的简单使用的主要内容,如果未能解决你的问题,请参考以下文章

Junit5 + YAML 参数化和数据驱动,让 App 自动化测试更高效

测试开发 | Junit5 + YAML 轻松实现参数化和数据驱动,让 App 自动化测试更高效

pytest数据驱动的缺点

pytest测试框架-数据驱动 yaml/excel/csv/json

Pytest进阶之参数化

pytest接口自动化测试框架 | 接口自动化至yaml数据驱动