保姆级教程Stept3--批量导入文件及导出测试结果
okk,很高兴又和大家见面了,前面讲到保姆级教程Step2--独立接口脚本开发,今天持续为大家更新接口自动化保姆级教程Step3--批量导入文件及导出测试结果
承接上文,我们从搭建环境到独立接口脚本开发,到接下来的批量导入文件及导出测试结果,本质上是为了方便我们的工作,减少个人的时间成本,减少企业的人力成本,所以一定需要学会如何批量导入文件,进行多个用例多种场景的测试,最后批量导出测试结果,完成测试成果物的批量闭环处理。
话不多说我们开冲!
一、批量导入文件
首先我们回顾上一期讲的登录接口的脚本,我们之前尝试过这样三个场景:用户不存在、账号或密码错误、登录成功
如果需要进行批量的登录账号测试,我们可以在一个测试文件中输入这样3组场景的测试数据,之后导入进行批量测试
批量导入的文件我们选择CSV格式文件,当然你也可以根据不同需求替换相关导入文件格式
我选择CSV(Comma-Separated Values)格式用于批量导入文件的原因主要有以下几点:
- 结构简单明了:CSV文件使用逗号分隔各个数据字段,使得数据的组织和结构非常清晰。这种格式使得数据易于被计算机程序读取和处理。
- 通用性强:CSV文件可以被任何文本编辑器或电子表格程序打开和编辑,因此具有很强的通用性。无论是Windows、Mac还是Linux操作系统,都可以轻松处理CSV文件。
- 跨平台性:由于CSV文件的格式简单,不依赖于特定的软件或操作系统,因此可以在不同的平台和系统之间轻松传输和共享数据。
- 存储量小:CSV文件以纯文本形式存储数据,因此所占用的存储空间相对较小。这对于需要处理大量数据的用户来说,是一个重要的优势。
- 易于转换:CSV文件可以很容易地转换为其他格式,如Excel、XML、JSON等。这种转换的灵活性使得CSV格式在数据迁移、集成和交换等方面具有优势。
- 批量处理效率高:在需要导入大量数据的情况下,CSV格式的数据导入速度通常较快。这是因为CSV文件的结构简单,使得读取和处理数据的速度得以提升
1.1维护测试数据
新建excel文件,维护好测试数据,以CSV格式进行保存
1.2读取CSV文件数据
维护好测试数据后,我们得先确保我们的测试数据可以被读取到我们的测试脚本中
通过编写代码进行CSV文件读取:
import csv #调用csv文件的类包
path=r'D:\inputCSV\userinfo.csv' #导入文件存放路径 r表示这个字符串是一个原始字符串
file=open(path,'r') #获取文件打开的路径及权限 r代表可读,w代表可写
table=csv.reader(file) #读取csv文件内容
header = next(file) #跳过第一行表头不读取
for row in table: #循环读取文件中的数据
print(row) #打印读取内容
1.3处理读取出来的数据
通过打印结果,我们可以看到维护的测试数据已经通过我们写的脚本被读取出来,读出来只是第一步,接下来我们需要把读出来的数据进行处理,方便我们拆分数据进行导入。
我们需要把每一行的数据作为一条测试用例进行导入,那么如何单独获取读到的一行数据,并把这行数据作为参数传入接口,并获取响应结果呢
答案是逐行打印,逐行传入
print(row[0]) #这代表打印第一列数据,从0开始算第一列
print(row[0]) #这代表打印第二列数据,从1开始算第二列
print(row[0]) #这代表打印第三列数据,从2开始算第三列
数据经过第二步的处理后已经变成我们需要的数据,但是要作为字典值传入接口作为参数,我们还需要进行第三步:把数据放入字典中
userinfo['username'] = row[0] #把第一列数据赋给 username 放入字典中
userinfo['password'] = row[1] #把第二列数据赋给 password 放入字典中
userinfo['登录结果'] = row[2] #把第三列数据赋给 登录结果 放入字典中
print(userinfo) # 打印该字典内容
1.4传入处理好的数据进行批量测试
通过打印结果我们可以发现我们对数据处理的三部曲已经完成,接下去就是把数据作为参数传入接口中,进行批量数据导入的测试验证
response=requests.post(url,data=userinfo).text #把字典中的内容作为参数传入接口中 print(response) #打印接口返回结果
我们可以看到通过这简单的几个步骤,我们把需要批量导入的测试数据进行维护、读取、处理转化、最终实现了批量测试用例的执行。
二、批量导出测试结果
有了批量测试数据导入的执行结果,现在我们需要把这些结果重新写入文档,并导出测试用例执行后的测试结果。
2.1创建可写的测试文件
import csv #调用csv文件的类包
path=r'D:\inputCSV\testresult.csv' #导入文件存放路径 r表示这个字符串是一个原始字符串
file2=open(path,'w') #获取文件打开的路径及权限 r代表可读,w代表可写
file2.write('username'+','+'password'+','+'登录结果'+','+'测试结果') #拼接字符串,写入需要的数据结果
file2.close() #停止导出
第一步通过创建可写的测试文件,并写入需要的相关数据 username、password、登录结果和测试结果。
'username'+','+'password'+','+'登录结果'+','+'测试结果' 此处通过 '+' 加号和 ','逗号进行字符串拼接使得数据结果可以写入到不同列中。
2.2 把测试结果写入到csv文件中
第二步我们需要把通过批量导入的测试数据作为参数,通过接口发生请求后获取到返回的测试结果,并把这个测试结果写入到我们指定的CSV文件中。
下面纯纯干货直接上代码
import csv #调用csv文件的类包
url = 'http://localhost:8080/jwshoplogin/user/login.do'
path1=r'D:\inputCSV\userinfo.csv' #导入文件1存放路径 r表示这个字符串是一个原始字符串
path2=r'D:\inputCSV\testresult.csv' #导入文件2存放路径 r表示这个字符串是一个原始字符串
file1=open(path1,'r') #获取文件1打开的路径及权限 r代表可读
file2=open(path2,'w') #获取文件2打开的路径及权限 w代表可写
table=csv.reader(file1) #读取csv文件1内容
header=next(file1) #跳过文件1第一行表头不读取
userinfo={} #定义一个空的字典数据
for row in table: #循环读取文件中的数据
userinfo['username'] = row[0] #把第一行第一个元素赋给 username 放入字典中
userinfo['password'] = row[1] #把第一行第二个元素赋给 password 放入字典中
print(row[2]) #打印row[2]登录结果
response = requests.post( url, data=userinfo ).text # 把字典中的内容作为参数传入接口中 print(response) #打印接口返回结果
r=response.find(row[2]) #把登录结果赋给 r
print(row[2]) #再次打印row[2]的值作为对比查看是否找到相同的登录结果
print(r) #打印r的值查看登录结果
if r>0: #如果r>0 则获取到了与传入结果相同的登录结果
print(r) #打印r的值作为结果对比
print("接口测试通过")
file2.write( row[0] + ',' + row[1] + ',' + row[2]+','+'测试通过') # 拼接字符串,导出测试结果 else:
print(r)
print( "接口测试失败" )
file2.write( row[0] + ',' + row[1] + ',' + row[2] + ',' + '测试失败' ) # 拼接字符串,导出测试结果
file2.close() # 停止数据写入
要注意的是:导入文件中的预期登录结果必须与实际执行结果一致,否则登录结果校验不一致会打印出来接口测试失败。
接下来我们看看执行结果和导出的csv文件内容是否正确
从打印出来的直接结果看,预期结果与接口返回结果一致,接口测试通过
从导出CSV文件内容来看,基本实现测试结果导出功能,但是格式上还存在一定问题,导出的结果没有隔开,且没有换行,那么接下来最后的步骤就是对导出结果进行处理,转化为我们想要的测试报告格式。
2.3优化导出测试报告
完成了测试结果写入到csv文件中,那么就到了最后一步,我们需要处理导出结果没有隔开和换行的问题,我们可以通过拼接换行符 '\n' 来尝试一下是否能达成我们想要的效果。
执行一下我们的代码,查看CSV文件的导出结果
如果没问题,那么接下来就是见证奇迹的时刻
我们先看执行结果:
OK,没问题没有报错,再打开导出的CSV文件查看导出结果
OKKK!恭喜你,看到这里你又一次完成了保姆级教程Stept3--批量导入文件及导出测试结果的学习内容,你可以通过上一期测试准备工作及接口脚本的编写后来试试批量导入文件及批量导出测试结果的畅快输出了,下一期内容我们继续学习如何进行多个测试接口的接口联调工作 !
通过本期内容的学习,你是否掌握了批量导入文件及导出测试结果呢,有不懂或不同想法意见的欢迎在评论区留言,学习就是通过不断的互相碰撞爆发出思维的火花。
保姆级教程Stept4--玩转接口联调测试之面向对象(持续更新中)
环境部署相关安装包及接口文档可关注公众号
AI时代下无法被替代的测试们
发送:环境部署安装包 领取环境部署相关安装包
发送:接口文档 领取项目实战接口文档
有相关问题可在评论区留言或添加VX:19883291985 私信咨询