python自动化测试之Pytest框架之YAML详解以及Parametrize数据驱动!

一、YAML详解

YAML是一种数据类型,它能够和JSON数据相互转化,它本身也是有很多数据类型可以满足我们接口 的参数类型,扩展名可以是.yml或.yaml

作用:

1.全局配置文件
基础路径,数据库信息,账号信息,日志格式,报告名称等。
2.编写测试用例
接口自动化测试用例

语法结构:

1.区分大小写 Name name
2.通过缩进来表示层级关系。使用空格。
3.可以使用#作为注释
4.字符串一般默认可以不使用引号,必须时才使用。

数据类型:

基本类型:

整数
浮点数
字符串(当有特殊字符时:双引号不会被转义,其它的都会加一个转义符\)
布尔值
null
日期时间

复杂类型:

对象(字典):键: (空格) 值

数组(列表):它是使用 一组横线"-" 开头。

数据类型强转:【鸡肋】

!!int
!!str

引用:

引用:&建立锚点(标记),*使用锚点,<<表示合并到当前数据。

二、YAML的读写和清空

安装:
pip install pyyaml
读写和清空

python 复制代码
#读取 
def read_yaml(yaml_path): 
 with open(yaml_path,encoding="utf-8",mode="r") as f: 
 value = yaml.safe_load(f) 
 return value 

#写入 
def write_yaml(yaml_path,data): 
 with open(yaml_path,encoding="utf-8",mode="w") as f: 
 yaml.safe_dump(data, stream=f,allow_unicode=True) 

# #清空 
def clear_yaml(yaml_path): 
 with open(yaml_path, encoding="utf-8", mode="w") as f: 
 pass

三、pytest的parametrize结合yaml实现数据驱动

python 复制代码
@pytest.mark.parametrize("参数名","参数值(可以是list或tuple)")

方法一:【不常用】

方法二:【常用】

python 复制代码
class TestApi:
    @pytest.mark.parametrize("caseinfo", read_yaml("../testcases/test_api.yaml"))
    def test_login2(self,caseinfo):
        print("登录测试用例:%s " % caseinfo)
python 复制代码
-
  username: admin
  password: "001"
-
  username: admin2
  password: "002"
-
  username: admin3
  password: "003"


多个用例

python 复制代码
-
  feature: 正例:接口所属模块
  story: 接口名称
  title: 用例标题
  request:
    method: get
    url: http://www.baidu.com
    headers: 请求头
    params: 请求参数
  validate: null

-
  feature: 反例:接口所属模块
  story: 接口名称
  title: 用例标题
  request:
    method: get
    url: http://www.baidu.com
    headers: 请求头
    params: 请求参数
  validate: null
相关推荐
小二·4 小时前
Python Web 开发进阶实战:全链路测试体系 —— Pytest + Playwright + Vitest 构建高可靠交付流水线
前端·python·pytest
云半S一1 天前
pytest的学习过程
经验分享·笔记·学习·pytest
0和1的舞者1 天前
GUI自动化测试详解(三):测试框架pytest完全指南
自动化测试·python·测试开发·自动化·pytest·测试
我的xiaodoujiao1 天前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 39--生成 Allure测试报告
python·学习·测试工具·pytest
我的xiaodoujiao1 天前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 38--Allure 测试报告
python·学习·测试工具·pytest
旦莫3 天前
Pytest教程:Pytest与主流测试框架对比
人工智能·python·pytest
X1A0RAN3 天前
解决docker容器执行pytest命令报socket.gaierror: [Errno -2] Name or service not known 错误问题
docker·容器·pytest
程序员三藏4 天前
接口自动化测试之 pytest 接口关联框架封装
自动化测试·软件测试·python·测试工具·测试用例·pytest·接口测试
旦莫5 天前
怎么才能算对自动化测试框架二次开发(以Pytest为例)
python·测试开发·pytest·ai测试
彩色面团儿7 天前
Pytest框架测试用例分析(测试笔记二)
笔记·测试用例·pytest