当前位置: 首页 > news >正文

资深测试总结,自动化测试-ddt数据驱动yaml文件实战(详细)

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

ddt 驱动 yaml/yml 文件来实现数据驱动测试

ddt.file_data:装饰测试方法,参数是文件名。文件可以是 json 或者 yaml 类型。

注意:如果文件是以 “.yml”或者".yaml" 结尾,ddt 会作为 yaml 类型处理,其他文件都会作为 json 文件处理。

如果文件是列表,列表的值会作为测试用例参数,同时,会作为测试用例方法名后缀显示。

如果文件是字典,字典的 key 会作为测试用例方法的后缀显示,字典的 value 会作为测试用例参数。

1、yaml 文件基础格式要求

基础语法:
大小写敏感;
使用缩进表示层级关系;
缩进不允许使用 tab,只允许空格;
缩进的空格数不重要,只要相同层级的元素左对齐即可;
‘#’ 表示注释;

YAML 支持以下几种数据类型:
对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)  
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)  
纯量(scalars):单个的、不可再分的值  
yaml 列表结构
以 - 开头的行表示构成一个数组

# data.yaml 文件内容-data1
-data2
-data3
import yamlf = open("data", encoding="utf8")
v = yaml.load(f)
print(v)
print(type(v))
f.close()# 结果如下
['data1', 'data2', 'data3']
<class 'list'>

yaml 多维列表结构

# data.yaml 文件内容-- data1- data2
-data3
import yamlf = open("data", encoding="utf8")
v = yaml.load(f)
print(v)
print(type(v))
f.close()# 结果如下
[['data1', 'data2'], 'data3']
<class 'list'>

yaml 字典结构
字典结构没有 -
冒号前为键,冒号后为值
冒号后面一定要空格

# data.yaml 文件内容username : admin
password : "123456"
import yamlf = open("data", encoding="utf8")
v = yaml.load(f)
print(v)
print(type(v))
f.close()# 结果如下
{'username': 'admin', 'password': '123456'}
<class 'dict'>

yaml 多维字典结构

# data.yaml 文件内容data :username: adminpassword: "123456"
code : "0000"
msg : "登录成功!"
import yamlf = open("data", encoding="utf8")
v = yaml.load(f)
print(v)
print(type(v))
f.close()# 结果如下
{'data': {'username': 'admin', 'password': '123456'}, 'code': '0000', 'msg': '登录成功!'}
<class 'dict'>

列表 + 字典,复杂结构

# data.yaml 文件内容-username : adminpassword : "123456"
-username : Evanpassword : xxxxxx
import yamlf = open("data", encoding="utf8")
v = yaml.load(f)
print(v)
print(type(v))
f.close()# 结果如下
[{'username': 'admin', 'password': '123456'}, {'username': 'Evan', 'password': 'xxxxxx'}]
<class 'list'>

yaml 纯量
字符串;布尔值;整数;浮点数;Null;时间;日期

boolean: - TRUE  #true,True都可以- FALSE  #false,False都可以
float:- 3.14- 6.8523015e+5  #可以使用科学计数法
int:- 123- 0b1010_0111_0100_1010_1110    #二进制表示
null:nodeName: 'node'parent: ~  #使用~表示null
string:- 哈哈- 'Hello world'  #可以使用双引号或者单引号包裹特殊字符- newlinenewline2    #字符串可以拆成多行,每一行会被转化成一个空格
date:- 2018-02-17    #日期必须使用ISO 8601格式,即yyyy-MM-dd
datetime: -  2018-02-17T15:02:31+08:00    #时间使用ISO 8601格式,时间和日期之间

使用T连接,最后使用+代表时区

2、实例详细

pip install pyyaml

注意:安装的包名为 pyyaml,但是导入的是 yaml

yaml 文件可以通过 open 函数来读取,然后通过 load() 方法转换成字典
如下图实例

A1

import yamlf = open("ddt_data.yaml", encoding="utf8")
print(yaml.load(f))
f.close()# 运行结果如下
"""
[{
'url': 'http://cms.duoceshi.cn/xxx/xxxx/xxxxx', 
'method': 'post', 
'header': {'Content-Type': 'application/x-www-form-urlencoded'}, 
'params': {'userAccount': 'admin', 'loginPwd': 123456}
}]
"""

如下图为我的数据文件,且文件中数据类型为字典

A2

import requests
import unittest
from ddt import ddt, file_data@ddt
class CmsLogin(unittest.TestCase):@file_data("ddt_data.yaml")def testcase(self, method, url, header, params):res = requests.request(method, url, headers=header, data=params)print(res.text)if __name__ == '__main__':unittest.main()# 运行结果如下
"""
Ran 2 tests in 0.215s..
{"code":"200","msg":"登录成功!","model":{}}
{"code":"400","msg":"登录帐号不存在!","model":{}}
----------------------------------------------------------------------
"""

如下图为我的数据文件,且文件中数据类型为列表

A3

import yaml
from ddt import ddt, data, unpackdef get_yml_data(yml_file):with open(yml_file, encoding="utf8") as f:return yaml.load(f)@ddt
class CmsLogin(unittest.TestCase):@data(*get_yml_data("ddt_data.yml"))@unpackdef testcase(self, name, age):print(name + "----" + str(age))if __name__ == '__main__':unittest.main()# 运行结果如下
"""
Ran 3 tests in 0.000s...
Evan----19
Lvan----20
Alex----21
"""
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

生命的意义在于奋斗,拥抱挑战,超越自我。跨越艰难,攀登巅峰,用汗水书写辉煌的传奇。相信自己的力量,坚持不懈,绽放梦想的光芒,让每一次努力都成为自己成长的里程碑!

积极拥抱挑战,不畏困难努力前行。胜利属于勇敢者,成功源于不懈奋斗。牢记初心使命,砥砺前行,用汗水浇灌理想的花朵,绽放生命的壮丽篇章。

勇往直前,不屈不挠,奋斗的汗水浇灌希望的花朵。追逐梦想,超越自我,用拼搏书写属于自己的传奇篇章。每一次努力都是收获的种子,坚信奋斗,未来必将绽放出耀眼的光芒!

http://www.lryc.cn/news/98577.html

相关文章:

  • F12 浏览器调试模式页面刷新 network 日志刷新消失的解决办法
  • 代理模式-对象的间接访问
  • 汽车产业链面临重大变革 大运乘用车加强产业布局 助力低碳出行
  • simulink与遗传算法结合求解TSP问题
  • 环境搭建-Ubuntu18.04.6系统TensorFlow BenchMark的GPU测试
  • C# 汇总区间
  • 加利福尼亚大学|3D-LLM:将3D世界于大规模语言模型结合
  • HCIA实验四
  • 常见的算法
  • Jetbrains 2023.2教程
  • OpenLayers入门,OpenLayers地图初始化时如何设置默认缩放级别、设置默认地图中心点、最大缩放级别和最小缩放级别以及默认坐标系
  • css实现步骤条中的横线
  • 【业务功能篇57】Springboot + Spring Security 权限管理 【上篇】
  • 云计算需求激增带来的基础设施挑战及解决方案
  • R语言中的函数23:zoo::rollmean, rollmax, rollmedian, rollsum等等
  • 数据结构—数组和广义表
  • 服务器负载均衡算法有哪些
  • 2023年深圳杯数学建模B题电子资源版权保护问题
  • Easyui中datagrid切换页码后,再次根据其他条件查询,重置为第一页,序号从1开始显示
  • 随笔03 考研笔记整理
  • 一次线上OOM问题的个人复盘
  • 【机器学习】基础知识点的汇总与总结!更新中
  • NLP杂记
  • 算法通过村第二关-链表白银笔记
  • 力扣题库刷题笔记75--颜色分类
  • 《面试1v1》如何提高远程用户的吞吐量
  • 论文笔记--Distilling the Knowledge in a Neural Network
  • Mac上安装sshfs
  • MQ公共特性介绍 (ActiveMQ, RabbitMQ, RocketMQ, Kafka对比)
  • 灵雀云Alauda MLOps 现已支持 Meta LLaMA 2 全系列模型