四. 读取测试数据
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 = xxx@163.com 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.ini 中 file_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)
网友评论