【Web UI自动化测试】Web UI自动化测试之数据驱动篇(全网最全)

1600 篇文章 75 订阅
1439 篇文章 116 订阅

本文大纲截图:

 

1、数据驱动介绍【文末免费分享自动化测试学习资源】

数据驱动: 是以数据来驱动整个测试用例的执行,也就是测试数据决定测试结果。如:测试加法,则测试数据是1和1,测试结果就是2,如果测试数据是1和2,测试结果就是3。

数据驱动特点:

  • 1)数据驱动本身不是一个工业级标准的概念,因此在不同的公司都会有不同的解释。

  • 2)可以把数据驱动理解为一种模式或者一种思想。

  • 3)数据驱动技术可以将用户把关注点放在对测试数据的构建和维护上,而不是直接维护脚本,可以利用同样的过程对不同的数据输入进行测试。

  • 4)数据驱动的实现要依赖参数化的技术。

测试数据介绍:

  • 1)直接定义在测试脚本中(简单直观,但代码和数据未实现真正的分离,不方便后期维护)

  • 2)从文件读取数据,如JSONexcelxmltxt等格式文件

  • 3)从数据库中读取数据

  • 4)直接调用接口获取数据源

  • 5)本地封装一些生成数据的方法

2、JSON数据操作

JSON:全称是”JavaScript Object Notation”,是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。

JSON特点:

  • 1)JSON是纯文本

  • 2)JSON具有良好的自我描述性,便于阅读和编写

  • 3)JSON具有清晰的层级结构

  • 4)有效地提升网络传输效率

语法规则:

  • 大括号保存对象

  • 中括号保存数组

  • 对象数组可以相互嵌套

  • 数据采用键值对表示

  • 多个数据由逗号分隔

类型:

  • 数字(整数或浮点数)

  • 字符串(在双引号中)

  • 逻辑值(true 或 false

  • 数组(在中括号中)

  • 对象(在大括号中)

  • null

示例:

{
    "name":"tom",
    "age":18,
    "isMan":true,
    "school":null,
    "address":{
        "country":"中国",
        "city":"江苏苏州",
        "street":"科技园路"
    },
    "numbers":[2,6,8,9],
    "links":[
        {
            "name":"Baidu",
            "url":"http://www.baidu.com"
        },
        {
            "name":"TaoBao",
            "url":"http://www.taobao.com"
        }
    ]
}

JSON文件读写:

读取JSON文件:

  • 格式:json.load(f)

  • 举例:

# 导入依赖包
import json


with open('data.json', encoding='UTF-8') as f:
    data = json.load(f)  # 返回的数据类型为字典或列表

写入JSON文:

  • 格式:json.dump(data, f, ensure_ascii=False)

    • data 为写入的内容

    • ensure_ascii=False 解决写入有中文乱码问题

# 导入依赖包
import json


param = {'name': 'tom', 'age': 20}
with open('data2.json', 'w', encoding='UTF-8') as f:
    json.dump(param, f)

JSON与Python字典的转换:

把JSON字符串转换为Python字典:

  • 格式:json.loads(json_str)

# 导入依赖包
import json


json_str = '{"id": 1, "name": "Tom", "address": "北京市海淀区", "school": null}'
dict_data = json.loads(json_str)

把Python字典类型转换为 JSON字符串:

  • 格式:json.dumps(dict)

# 导入依赖包
import json


data = { 
    'id': 1,
    'name': 'Tom', 
    'address': '北京市海淀区',
    'school': None
}
json_str = json.dumps(data)

3、数据驱动应用

目录文件夹:base、data、scripts

base: 读取json、读取txt

读取json:

  • 代码(读取)

# 导包
import json


def read_json(filename):
    filepath = "../data/"+filename
    # 获取文件流 并调用load
    with open(filepath, "r", encoding="utf-8") as f:
        return json.load(f)


"""
    问题:
        需求格式:[(), ()] 或 [[], []]
    解决:
        1、新建空列表 arrs = []
        2、读取现有的 json 值,存放到列表中
"""


if __name__ == '__main__':
    print(read_json("login.json"))
  • 代码(格式转换)

  • 目标格式:[(), ()]

# 导包
import json


def read_json(filename):
    filepath = "../data/" + filename
    # 获取文件流 并调用load
    with open(filepath, "r", encoding="utf-8") as f:
        result = json.load(f)
        # 新建空列表
        arrs1 = []
        for data1 in result.values():
            # print(data)
            arrs1.append((data1.get("username"),
                          data1.get("password"),
                          data1.get("verify_code"),
                          data1.get("expect")))
    return arrs1


if __name__ == '__main__':
    print(read_json("login.json"))
  • 目标格式:[[], []]

# 导包
import json


def read_json(filename):
    filepath = "../data/" + filename
    # 获取文件流 并调用load
    with open(filepath, "r", encoding="utf-8") as f:
        result = json.load(f)
        # 新建空列表
        arrs2 = []
        for data2 in result.values():
            # print(data)
            arrs2.append([data2.get("username"),
                          data2.get("password"),
                          data2.get("verify_code"),
                          data2.get("expect")])
    return arrs2


if __name__ == '__main__':
    print(read_json("login.json"))

读取txt:

  • 代码(读取)

def read_txt():
    with open("../data/calc.txt", "r", encoding="utf-8") as f:
        return f.readlines()


"""
    问题:读出来的不是预期需要的格式
"""

if __name__ == '__main__':
    print(read_txt())
  • 代码(格式转换)

  • 目标格式:[(), ()]

def read_txt(filename):
    filepath = "../data/"+filename
    with open(filepath, "r", encoding="utf-8") as f:
        result = f.readlines()
        arrs1 = []
        for data in result:
            arrs1.append(tuple(data.strip().split(",")))
    return arrs1


if __name__ == '__main__':
    print(read_txt("calc.txt"))
  • 目标格式:[[], []]

def read_txt(filename):
    filepath = "../data/"+filename
    with open(filepath, "r", encoding="utf-8") as f:
        result = f.readlines()
        arrs2 = []
        for data in result:
            arrs2.append(data.strip().split(","))
    return arrs2[1::]


if __name__ == '__main__':
    print(read_txt("calc.txt"))

data: 数据文件

  • login.json

  • calc.txt

  • writeIn.json

  • reading.json

scripts: json读取、json写入、json转换

json读取:

  • load()

    • 目标: 读取 json

    • 方法:load(文件流)

# 导包
import json

# 获取文件流,并调用load方法
with open("../data/reading.json", "r", encoding="utf-8") as f:
    data = json.load(f)
    print(data)

json写入:

  • dump()

    • 目标:写入 json

    • 方法:json.dump(写什么数据(字典数据),往哪写(文件流))

# 导包
import json

""" json 写入"""
# 定义写入内容
data = {"name": "猴子", "age": 18}
# 调用写入方法
with open("../data/writeIn.json", "w", encoding="utf-8") as f:
    # ensure_ascii=False 为 不适用ASCII码,针对写入有中文乱码问题
    json.dump(data, f, ensure_ascii=False)

json转换:

  • dumps()

    • 目标:将python字典 转换为json字符串

    • 格式:json.dumps(python字典)

# 导包
import json

""" 1、将 python字典 转换为 json字符串 """
# 定义 python字典
data = {"name": "张三", "age": 18}
print("未转换之前类型:", type(data))

# 转换
data2 = json.dumps(data)
print("转换之后类型:", type(data2))
  • loads()

    • 目标:将json字符串 转换为 python字典

    • 格式:json.loads(json字符串)

# 导包
import json

""" 2、将 json字符串 转换为 python字典 """
# 定义 json字符串
# 注意:json中键名外必须为双引号
data = '{"name": "张三", "age": 18}'
# 错误写法
# data = "{'name': '张三', 'age': 18}"
print("未转换之前类型:", type(data))

# 转换
data2 = json.loads(data)
print("转换之后类型:", type(data2))

自动化测试学习视频

 

面试资料

我们学习软件测试必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

加油吧,测试人!如果你需要提升规划,那就行动吧,在路上总比在起点观望的要好。
未来的你肯定会感谢现在拼命的自己!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值