软件测试笔记_11_数据驱动

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

一、数据驱动介绍

1. 什么是数据驱动

  1. 通过测试数据控制脚本用例的执行,直接影响测试结果
  2. 数据驱动最好是结合PO+参数化技术使用

2. 数据驱动的优点

  1. 将维护的关注点放到测试数据上,而不是去关注测试脚本/用例

3. 数据驱动的常用格式

  1. JSON(重点)
  2. XML
  3. EXCEL
  4. CSV
  5. TXT

二、JSON操作

1. JSON介绍

  1. 文本
  2. 轻量级数据交换的格式
  3. 键值对组成,双引号括起:{"aaa":"bbb", "xxx":"yyy"}
  4. 区别于python的是:JSON是文本格式

2. python字典与JSON之间的转换

(1)python字典 —> JSON字符串json.dumps()

  1. 注意点
    json.dump() json
    json.dumps() 转换为json字符串
  2. 代码步骤
    导包 json
    调用方法 dumps 方法转换为json字符串
    一个序列化的过程

(2)JSON字符串 —> 字典json.loads()

  1. 注意
    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()

  1. 参数使用:“r
  2. 代码,底层源码 默认类型就是 r
    with open("../data/test01.json", 'r', encoding='utf-8') as file:print(json.load(file))

(4)JSON文件的[写]json.dump()

  1. 参数使用:“w
  2. 方法:json.dump(写入内容,存放路径)
  3. 步骤
    导包
    定义写入内容
    获取文件流并写入数据
  4. 写入的时候要设置
    查看底层源码,修改参数
    不设置的话,json文件内部中文会被编码
  5. 代码
    with open("../data/test01.json", 'w', encoding='utf-8') as file1:
    json.dump(data, file1,ensure_ascii=False)
    在这里插入图片描述

三、数据驱动实践1

  1. 描述
    1) 加法测试
    2) 数值:0~9的整数值之间的加法运算
  2. 结构
    1)base
    2)page
    3)scripts
  3. 分析base
    0)初始化方法__init__(self)
    1)查找元素
    2)点击元素
    3)获取value属性值的方法封装
    4)结果截图
  4. page
    1)点击数字
    使用(By.ID, "simple{}".format(n)) [n是输入数字的字符串形式的遍历]
    调用base内的点击方法
    2)点击+号
    3)点击=号
    4)获取结果
    5)组装业务方法
  5. scripts
    1)初始化方法
    获取页面层的页面对象
    获取driver
    2)结束方法
    关闭driver
    3)测试方法
    调用加法运算业务方法
    断言
    截图
  6. 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
    }
  7. json数据的封装
    1)导包&调用json.load读取
    2)格式封装
    。values()获取字典值
    .append(字典.get("键名"))

练习代码链接:数据驱动+参数化+PO模式+加法运算模拟

四、数据驱动实践2

1. 查找元素判断是否操作成功–思路封装
找到元素 – return True
找不到 – return False
2. 如何区分正向逆向用例
思路:在测试数据中添加一一个标识正向用例或逆向用例的标记: 如:True/False
步骤:
1. 调用登录方法(此登录方法中,只有输入用户名、输入密码、输入验证码、点击登录按钮) 切记:不要封装点击登录连接地址;
2. 判断是否正向用例:
# 判断安全退出是否存在
# 点击安全退出
# 点击登录连接地址

扩展(txt文件读取)

  • txt文本格式:
    在这里插入图片描述

方式一

  • 读取结果
    在这里插入图片描述
  • 读取方式
    在这里插入图片描述

方式二

  • 写法
    在这里插入图片描述

  • 结果
    在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值