前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >API自动化测试笔记(二):测试数据

API自动化测试笔记(二):测试数据

作者头像
free赖权华
发布2020-05-04 15:01:04
3540
发布2020-05-04 15:01:04
举报
文章被收录于专栏:赖权华的笔记赖权华的笔记

(一)说明

    相信不管是GUI自动化测试,亦或者是API自动化测试,都离不开测试数据。

     这里说的测试数据我理解分为2部分:

        1、用例执行前需要的前置条件,例如我验证正确账户、密码能否成功登录,首先就需要一个已经注册的用户。

        2、测试用例本身需要的输入及预期结果。例如:调用一个API,我需要设置不同的请求参数,验证不同请求参数下的响应是否符合预期。这里的请求参数和预期结果也是我们的测试数据。

    这里主要提供个思路,在API自动化,亦或者GUI自动化中,该怎么管理我们的测试数据(这里针对的是第二种测试数据)。思路大概是:应用工厂设计模式

       1、工厂类:接受不同格式的数据,解析并处理为DataFrame格式数据

       2、将DataFrame格式的数据处理成字典或列表。

    使用工厂模式有个优点是,方便以后的扩展,例如如果有新增的文件格式,只要在工厂类中新增该文件格式的实现即可。

(二)简单实现代码

代码语言:javascript
复制
 1 import os
 2 import pandas as pd
 3 
 4 
 5 class ParamConfigSourceFactory():
 6 
 7     def __init__(self,filename,sheet_name=None):
 8         """
 9         工厂设计模式:接受不同格式数据,解析并转换为DataFrame格式数据
10         :param filename:
11         :param sheet_name:
12         """
13         self.filename = filename
14         self.sheet_name = sheet_name
15         self.df = self.get_file_data()
16 
17     def get_file_data(self):
18         file_type = os.path.splitext(self.filename)[1]
19         if file_type == '.xlsx':
20             df = pd.read_excel(io=self.filename,
21                                sheet_name=self.sheet_name)
22         else:
23             raise ValueError("不支持的文件格式{},仅支持xlsx格式".format(file_type))
24         return df
25 
26 
27 class ParamConfigSource():
28 
29     def __init__(self,filename,sheet_name=None):
30         self.filename = filename
31         self.sheet_name = sheet_name
32         self.df = ParamConfigSourceFactory(filename=self.filename,sheet_name=self.sheet_name).df
33 
34     def get_all_test_data_format_dict(self,flag=0):
35         """
36         :param flag
37             flag=0 返回 {0:{key1:value1,key2:value2..},1:{...}}格式数据
38             flag=1 返回 {0:[value1,value2...],1:[...]}格式数据
39         :return:
40         """
41         col_name = [col for col in self.df]
42         data = {}
43         num = 0
44         for indexs in self.df.index:
45             if flag == 0:
46                 row_data = {}
47                 for i in range(len(self.df.loc[indexs].values)):
48                     row_data[col_name[i]] = self.df.loc[indexs].values[i]
49             elif flag == 1:
50                 row_data = []
51                 for i in range(len(self.df.loc[indexs].values)):
52                     row_data.append(self.df.loc[indexs].values[i])
53             else:
54                 raise  ValueError("不支持的参数:{}".format(flag))
55             data[num] = row_data
56             num += 1
57         return data
58 
59     def get_all_test_data_format_list(self):
60         """
61         返回[(value1,value2...),(...)]格式数据
62         :return:
63         """
64         data = []
65         for indexs in self.df.index:
66             row_data = []
67             for i in range(len(self.df.loc[indexs].values)):
68                 row_data.append(self.df.loc[indexs].values[i])
69             data.append(tuple(row_data))
70         return data
71     
72 # 执行下看下结果
73 pcs = ParamConfigSource(filename="./测试1.xlsx",sheet_name="Sheet1")
74 print(pcs.get_all_test_data_format_dict())
75 print(pcs.get_all_test_data_format_dict(flag=1))
76 print(pcs.get_all_test_data_format_list())
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档