自动化测试用例要怎么写_实际使用方式
上一章 <自动化测试用例要怎么写> 介绍了这个文件主要功能, 还有文件的源码已经公开了(后期略微有一点点优化过, 没有上传, 需要的私信我! ! ! )
前言
这一章,主要介绍Excel 文件的编写方式, 以及需要注意的几个点,。要有大家还有什么需要的,可以继续加。(大神莫喷)
表格方式读取
先看一下源文件:文件名:读取讲解文件.xlsx sheet名:表格数据 ↓ ↓ ↓ ↓ ↓
很单纯的一个 表格结构的数据, 没有丝毫异常的存在 , 下边是读取他的方式
from utils.Read_File_Util import read_file_class
file_name = "E:\\读取讲解文件.xlsx"
mode_key = "读取讲解文件"
read_file_data = read_file_class.read_file(file_name,mode_key)
for d in read_file_data[“表格数据”] # sheet 的名字
print(d)
print(read_file_data)
输出的结果:
是以数组的方式,去展示出来的,通过 for in 就可以进行遍历
根据标记进行分组
当我们需要有一定的要求, 需要对不同的数据进行不同的处理, 我们就要对他进行分组分组的方式呢,在下边:
先看一下源文件:文件名:读取讲解文件.xlsx sheet名:表格数据2 ↓ ↓ ↓ ↓ ↓
file_name = "E:\\读取讲解文件.xlsx"
mode_key = "读取讲解文件"
read_file_data = read_file_class.read_file(file_name,mode_key)
# 这个是一对一时的使用, 返回时 是 dict嵌套dict
# group_data = read_file_class.dict_join_dict(read_file_data["表格数据2"],"序号")
# 这个是一对多的使用啊, 返回时 是 dict嵌套 list
group_data = read_file_class.list_join_dict(read_file_data["表格数据2"],"序号")
print(group_data)
全局变量的使用方法
从第一个文件的读取结果里边看到了,文件默认加了一个全局变量的字段,这个全局变量的使用方法是怎么用呢,下边我来介绍一下吧!
先看一下源文件:文件名:读取讲解文件.xlsx sheet名:全局变量 ↓ ↓ ↓ ↓ ↓
在文件里边添加了一个“全局变量” 的sheet页,这个里边有重点有两个列(key、value) 这两列不能没有,其他列可以随意添加。
先看一下源文件:文件名:读取讲解文件.xlsx sheet名:表格数据 ↓ ↓ ↓ ↓ ↓
和第一个图片不同的地方是 我在 最有加了一个操作人的列,这里是用来演示的, 后期有很大的用处。
和第一个的, 没有丝毫异常的存在 , 下边是读取他的方式
from utils.Read_File_Util import read_file_class
file_name = "E:\\读取讲解文件.xlsx"
mode_key = "读取讲解文件"
read_file_data = read_file_class.read_file(file_name,mode_key)
for d in read_file_data[“表格数据”] # sheet 的名字
print(d)
print(read_file_data)
输出的结果:
在文件中 用 {{key}} 包住,程序会去全局变量里边找对应看key对应的value替换过去。
引用的使用方法
引用的是用的意思呢,就是在第一页使用编写数据,在其他页面引用, 这样可以减少很多编写的时间。使用方法,是引用页面的 sheet名字。
标记名 | 类型 |
---|---|
ref{sheet} | 此 sheet 的全部数据 |
ref{sheet#1} | 此 sheet的序号 = 1 的 |
ref{sheet#1,2,3,4} | 此 sheet 的序号 = 1,2,3,4 的 |
ref{sheet#1_4} | 此 sheet 的序号 = 1到4 的 |
ref{sheet#1_4,6} | 此 sheet 的序号 = 1到4 和 6 的 |
ref{sheet#1_4,6_7} | 此 sheet 的序号 = 1到4 和 6到7 的 |
ref{sheet1#1;sheet2#1} | 读取多个 sheet 的序号 = 1 的 #号后面其他雷同 |
先看一下源文件:文件名:读取讲解文件.xlsx sheet名:表格数据 ↓ ↓ ↓ ↓ ↓
和第一个的, 没有丝毫异常的存在 , 下边是读取他的方式。
from utils.Read_File_Util import read_file_class
file_name = "E:\\读取讲解文件.xlsx"
mode_key = "读取讲解文件"
read_file_data = read_file_class.read_file(file_name,mode_key)
for d in read_file_data["表格数据"]: # sheet 的名字
print(d)
print(read_file_data)
输出的结果:
其他都是以数组的形式返回的,多sheet页读取的, 会变成dict。
数据转换方法
在浏览器上 用 F12 看过 接口调用的参数, 比如说, 性别这个单选按钮, 在页面上选男或者女,但是在接口参数里却变成了1或者2。这也就说明,看到的和自己实际接口用到的是不一样的。
那么我们写用例中的数据时,是写转换前的还是选择转后,写转换前的看着方便,写转换后的用着方便。但是用例还是给人看的,所以还是写转换前的,然后使用程序进行转换,这样用着也方便,看着也方便了。
下边我写一下怎样转换吧↓ ↓ ↓
先看一下源文件:文件名:读取讲解文件.xlsx sheet名:表格数据 ↓ ↓ ↓ ↓ ↓
接下来我就要多墨迹几句了, 写在代码的注释里了
# read_file_class 的 init 方法
def __init__(self):
curPath = os.path.abspath(os.path.dirname(__file__))
pro_path = curPath[:curPath.find(object_dir + os.sep) + len(object_dir + os.sep)]
# 读取了 data_switch 的文件,文件的内容往下看。
# 最后赋值给了 xls_dict 变量里边 from config.XLS_DICT import xls_dict, my_pow
# 这样,有两个位置可以配置 xls_dict 变量,用来进行数据转换 os.sep 文件夹分隔符
switch_datas = self.pub_read_file(pro_path + f"{os.sep}config{os.sep}data_switch.xlsx", "switch_data")
for switch_data in switch_datas:
if switch_data["web_type"] != "":
try:
web_type = json.loads(switch_data["web_type"])
except JSONDecodeError as e:
logger.error(switch_data["key_name"] + " 数据格式错误! ! ! ")
raise JSONDecodeError(switch_data["key_name"] + " 数据格式错误! ! ! ")
continue
for k,v in web_type.items():
if isinstance(v,str) and "bit" in v :
web_type[k] = my_pow(bitN=v)
pass
else:
web_type = {}
if web_type == {}:
switch_data_sql = {
"name_to_id":switch_data["name_to_id"],
"id_to_name":switch_data["id_to_name"]
}
else:
switch_data_sql = {}
xls_dict[switch_data["key_name"]] = dict(web_type,**switch_data_sql)
先看一下转换文件:文件名:{os.sep}config{os.sep}data_switch.xlsx sheet名:switch_data ↓ ↓ ↓ ↓ ↓
标题 | 介绍 |
---|---|
key_name | 用来转换的标题,上上图的标题 |
web_type | 在文件中转换 |
name_to_id | 使用sql在数据库中转换 |
id_to_name | 使用sql在数据库中转换 |
PS:web_type 和 name_to_id 两个只能使用一个。
在 data_switch.xlsx 中加入这个, 如果是sql 就在 name_to_id 那一列写 select value from tableName where name = ‘%(标题数据转换)s’;(标题数据转换 与 key_name 一样。sql 我随便写的)
准备工作做完了,剩下的就和第一个的, 没有丝毫异常的存在 , 下边是读取他的方式。
from utils.Read_File_Util import read_file_class
file_name = "E:\\读取讲解文件.xlsx"
mode_key = "读取讲解文件"
read_file_data = read_file_class.read_file(file_name,mode_key)
for d in read_file_data["表格数据"]: # sheet 的名字
print(d)
print(read_file_data)
读取完了以后 可以看到,原来的变成了1,又加了一个 oid_开头的,保留的是原来的数据。要是用 sql 的话,结果是一样的。
好啦,就这些, 其实就是一个小的工具方法,有什么需要的,可以私信我,我在添加进去,编写不易求关注!~ ~ ~ ~ ~ ~ ~