一、数据驱动介绍
1. 什么是数据驱动
- 通过测试数据控制脚本用例的执行,直接影响测试结果
- 数据驱动最好是结合PO+参数化技术使用
2. 数据驱动的优点
- 将维护的关注点放到测试数据上,而不是去关注测试脚本/用例
3. 数据驱动的常用格式
- JSON(重点)
- XML
- EXCEL
- CSV
- TXT
二、JSON操作
1. JSON介绍
- 文本
- 轻量级数据交换的格式
- 键值对组成,双引号括起:
{"aaa":"bbb", "xxx":"yyy"}- 区别于python的是:JSON是文本格式
2. python字典与JSON之间的转换
(1)python字典 —> JSON字符串json.dumps()
- 注意点
json.dump()写json
json.dumps()转换为json字符串- 代码步骤
导包 json
调用方法dumps方法转换为json字符串
一个序列化的过程
(2)JSON字符串 —> 字典json.loads()
- 注意
JSON字符串内部键名使用:双引号 括起
# 1. 导包
import json
# 2. python的字典
dict = {'age':22,'likes':['basketball','music','travel'],'中文':'转码'}
print(type(dict),dict)
print(type(json.dumps(dict)),json.dumps(dict))
"""
执行结果
<class 'dict'> {'age': 22, 'likes': ['basketball', 'music', 'travel'], '中文': '转码'}
<class 'str'> {"age": 22, "likes": ["basketball", "music", "travel"], "\u4e2d\u6587": "\u8f6c\u7801"}
"""
jsonstr = '{"age": 22, "likes": ["basketball", "music", "travel"], "姓名": "张三"}'
dict2 = json.loads(jsonstr)
print(type(jsonstr),jsonstr)
print(type(dict2),dict2)
"""
执行结果
<class 'str'> {"age": 22, "likes": ["basketball", "music", "travel"], "姓名": "张三"}
<class 'dict'> {'age': 22, 'likes': ['basketball', 'music', 'travel'], '姓名': '张三'}
"""
(3)JSON文件的[读]json.load()
- 参数使用:“
r”- 代码,底层源码 默认类型就是 r
with open("../data/test01.json", 'r', encoding='utf-8') as file:print(json.load(file))
(4)JSON文件的[写]json.dump()
- 参数使用:“
w”- 方法:
json.dump(写入内容,存放路径)- 步骤
导包
定义写入内容
获取文件流并写入数据- 写入的时候要设置
查看底层源码,修改参数
不设置的话,json文件内部中文会被编码- 代码
with open("../data/test01.json", 'w', encoding='utf-8') as file1:
json.dump(data, file1,ensure_ascii=False)
三、数据驱动实践1
- 描述
1) 加法测试
2) 数值:0~9的整数值之间的加法运算- 结构
1)base
2)page
3)scripts- 分析base
0)初始化方法__init__(self)
1)查找元素
2)点击元素
3)获取value属性值的方法封装
4)结果截图- page
1)点击数字
使用(By.ID, "simple{}".format(n))[n是输入数字的字符串形式的遍历]
调用base内的点击方法
2)点击+号
3)点击=号
4)获取结果
5)组装业务方法- scripts
1)初始化方法
获取页面层的页面对象
获取driver
2)结束方法
关闭driver
3)测试方法
调用加法运算业务方法
断言
截图- driver的封装
1)定义类变量
driver = None
2)使用类级别@classmethod
3)获取driver的方法
if cls.driver is None: ...{
获取浏览器驱动对象
最大化
打开url 【url放在配置文件page/__init__.py内】
}
返回cls.driver【体现单例模式】
4)关闭driver的方法
if cls.driver{
cls.driver.quit()
注意接下来要置空
cls.driver = None
}- json数据的封装
1)导包&调用json.load读取
2)格式封装
。values()获取字典值
.append(字典.get("键名"))
练习代码链接:数据驱动+参数化+PO模式+加法运算模拟
四、数据驱动实践2
1. 查找元素判断是否操作成功–思路封装
找到元素 – return True
找不到 – return False
2. 如何区分正向逆向用例
思路:在测试数据中添加一一个标识正向用例或逆向用例的标记: 如:True/False
步骤:
1. 调用登录方法(此登录方法中,只有输入用户名、输入密码、输入验证码、点击登录按钮) 切记:不要封装点击登录连接地址;
2. 判断是否正向用例:
# 判断安全退出是否存在
# 点击安全退出
# 点击登录连接地址
扩展(txt文件读取)
- txt文本格式:

方式一
- 读取结果

- 读取方式

方式二
-
写法

-
结果

本文介绍了数据驱动测试的概念、优点,并详细讲解了JSON格式在数据驱动中的应用,包括Python中字典与JSON的转换,以及JSON文件的读写操作。此外,还提供了两个数据驱动测试的实践案例,涉及到txt文件读取和元素操作判断。

1408

被折叠的 条评论
为什么被折叠?



