从零搭建接口测试框架(五)——读取测试数据

四. 读取测试数据

1. 读取配置文件

python内置了一个 ConfigParser模块 可用于读取配置文件。
一些配置信息可能需要经常做出改变,比如测试用例文件名、sheet名,又比如邮件功能中需要用到的文件头、收件人等信息,每次测试都可能不同。
我们把这类信息集中定义到配置文件 config.ini 中,以备变动和取用。

  • 编写配置文件
    根据我们最初的规划,在项目的根目录下即 InterTestDemo ,创建一个名为 config.ini 的文件,内容如下:

    1 [excel]
     2 # 测试用例文件统一存放在InterTestDemo/TestCase/目录下,
     3 # file_name用于指定本次测试需要使用的测试用例文件,
     4 # sheet_name用于指定Excel表格的sheet项,多个sheet用|进行分隔,如:
     5 # sheet_name = sheet1|sheet2|sheet3
     6 # 注意:“|”两边不能有空格
     7 file_name = TestCase.xlsx
     8 sheet_name = Add|Search
     9 
    10 
    11 [email]
    12 # 当active=yes时,激活邮件功能
    13 # receiver用于指定收件人,
    14 # subject用于指定邮件标题
    15 receiver = [email protected]
    16 subject = 测试报告
    17 active = yes
    
  • 读取 config.ini
    读取配置文件的方法很简单,只要将配置文件的存放路径作为参数,传入config对象的read方法中,然后就可以用config.get()获取指定配置了。

    import configparser
    from Common.getPath import GetPath
    
    # 获得config.ini文件存放路径
    config_path = GetPath().get_conf_path()
    # 读取配置文件config.ini 
    config = configparser.ConfigParser()
    config.read(config_path)
    # 获取[excel]中指定的file_name
    file_name = config.get('excel', 'file_name')
    # 获取[email]中指定的receiver
    receiver = config.get('email', 'receiver')
    

2. 读取测试用例

  • 在项目的根目录即 InterTestDemo 下,创建一个名为 TestCase 的文件夹,存放我们的测试用例文件,即:TestCase.xlsx(点击下载)

  • 注意
    该文件必须是Excel表格,请按照格式填写,否则将无法正确识别;
    Request_Data 一项传递的参数必须遵循标准json格式;
    表格中最后一项 Active 若选为 no ,该行用例将被忽略不执行;
    可以自己指定文件名,只需在 config.inifile_name 一项进行注册;

我们需要用到 xlrd模块 来读取Excel文件,首先安装 xlrd 模块:pip install xlrd
然后,在根目录即 InterTestDemo 下,创建一个名为 App 的文件夹,这个文件夹将用来存放框架的主体。在 App 文件夹下创建一个名为 getCase.py 的文件,用于获取Excel文件中的测试用例,内容如下:

  1 import os
  2 import sys
  3 import configparser
  4 from xlrd import open_workbook
  5 from xlrd.biffh import XLRDError
  6 from Common.log import Log
  7 from Common.getPath import GetPath
  8 
  9 
 10 class getCase():
 11     def get_xls(self):
 12         '''
 13         读取测试用例,
 14         xls_name为Excel表格名称
 15         sheet_name为sheet的名称
 16         '''
 17         # config.ini文件存放路径
 18         config_path = GetPath().get_conf_path()
 19         # 读取配置文件config.ini 
 20         config = configparser.ConfigParser()
 21         config.read(config_path)
 22         # 获取[excel]中指定的file_name
 23         file_name = config.get('excel', 'file_name')
 24         # 获取[excel]中指定的sheet_name
 25         sheet_name = config.get('excel', 'sheet_name')
 26 
 27         # 测试用例文件路径:../TestCase
 28         case_path = os.path.join(GetPath().get_case_dir(), file_name)
 29         log = Log(__name__).getlog()
 30         # 判断用例文件是否存在
 31         if not os.path.isfile(case_path):
 32             # 记录到日志并退出python程序
 33             log.error("测试用例文件不存在!")
 34             os._exit(1)
 35 
 36         file = open_workbook(case_path)     # 打开EXCEL
 37         sheets = sheet_name.split('|')
 38         cls = []    # 用于存储用例
 39         for s in sheets:
 40             try:
 41                 sheet = file.sheet_by_name(s)   # 打开指定sheet
 42             except XLRDError as e:
 43                 log.error("config.ini文件中sheet_name编辑错误")
 44                 raise
 45             nrows = sheet.nrows    # sheet的行数
 46             for i in range(nrows):
 47                 if sheet.row_values(i)[0] != 'Num':     # 过滤顶栏目录
 48                     if sheet.row_values(i)[9] != 'no':  # 过滤未激活的用例
 49                         cls.append(sheet.row_values(i))
 50         return cls
 51 
 52 
 53 if __name__ == '__main__':
 54     # 打印 Num 一栏
 55     print(getCase().get_xls()[0][0])
 56     # 打印 Api name 一栏
 57     print(getCase().get_xls()[0][1])
 58     # 打印 Active 一栏
 59     print(getCase().get_xls()[0][9])
 60     # 打印全部
 61     print(getCase().get_xls())
  • 来测试一下
>>> python getCase.py 
1.0
添加人物信息
yes
[[1.0, '添加人物信息', '姓名参数为空', 'http://127.0.0.1:8000/\n', 'super_table/......

3. 你懂的

>>> cd ../    # 回到根目录IntTestDemo
>>> git add .    # 将项目改动放入暂存区
>>> git commit -m    # 将暂存区的的修改提交到当前分支,m参数表示添加注释
>>> git push origin master    # 推送到远程服务器(github)

你可能感兴趣的:(从零搭建接口测试框架(五)——读取测试数据)