前言:
在自动化测试中,测试数据处理是绕不过去的一道坎。一个完整的自动化测试,必须要能自动生成测试报告。在接口自动化测试中,因为接口有多项重要数据,包括响应状态码,响应数据,请求url,请求的数据,测试时间等,所以这些数据需要存到csv文件中。把数据写入csv文件只是自动化测试的其中一步,后续还需要从csv文件中读取数据,然后分析测试数据,最后再转换成excel文件输出测试报告。至于为何使用csv而不直接使用excel文件,主要原因是由于csv文件易于读写,而且不用考虑各种excel软件版本的问题,csv文件在不同的编程语言中也易于操作。
目标:
实现请求一个接口,然后把响应的数据写入到csv文件中。需要保存的参数有:接口名称,测试时间,接口响应状态码,接口响应时间,发送的数据,响应的数据,服务器域名或ip等。
需要使用的库:
1、HTTP请求库:Requests
2、Python数据处理库:pandas。(这里只使用pandas的数据写入功能)
注:pandas库在后续会和Requests配合使用。pandas主要用于数据筛选,导入,读取excel和csv文件。更多关于pandas的教程请自行百度。
安装pandas:
pip install pandas
Pandas简单使用:
import pandas
def ToCsv():
#data为需要写入的数据,使用字典格式,key为列名,values为每一行的内容
data={
"name":"chen", #string直接写入即可
"age":[123],#int类型需要使用[]括起来
"sex":"男"
}
# 写入csv
#转换为dataframe格式
dataCSV = pandas.DataFrame(data)
dataCSV.to_csv("chen.csv", index=False, mode="a", header=False, encoding="GBK")
ToCsv()
把以上代码直接复制到pycharm运行即可以生成相应的csv文件。
dataCSV.to_csv几个参数说明:
chen.csv:生成的文件名,如果不存在会自动创建,注意要以.csv作为后缀,这里为当前目录下。
index=False:不写入索引名,按这里设置即可。
mode="a",追加模式,如果不使用这个模式,会把前面的内容覆盖。
header=False:不写入头部信息,即字典中的key值不写入。
encoding="GBK":编码格式为GBK,即中文编码,默认为utf-8,如果数据有中文时则可能会报错。
运行结果:

注:如果不明白pandas的话,直接按以上示例设置即可。
#######################################################
实战:
上面已经尝试了如何简单快捷的往csv文件中写入数据,接下来就是结合我们要测试的接口,将测试数据写入到csv中。
代码:
import requests
import pandas
import time
#http请求demol
def GetTest():
#接口请求
url="https://openapi.dvr163.com/message/nonce" #url
Param={ # 传递的参数,字典类型,所有参数写在这里即可
"method":"get"
}
Rque=requests.get(url,Param) # 发起Get请求
#测试数据
data={
"Interface":"获取服务器验证码", #接口名称
"time":time.strftime('%Y-%m-%d_%H:%M:%S', time.localtime(time.time())), #测试时间,这里使用格式化时间,
"StatusCode":[Rque.status_code] ,#接口响应状态码
"Responseime":[Rque.elapsed.total_seconds()],#接口响应时间
"Response DATA": Rque.text, #响应的数据,这里建议使用text,因为不是每个接口都返回json格式
"Request body": Rque.request.body, # 发送的数据,get请求的数据会在url中
"Url": Rque.url, # 请求的url
#更多参数请自行添加
}
#写入csv中,以下两行代码建议封装成函数
dataCSV = pandas.DataFrame(data)
dataCSV.to_csv("chen.csv", index=False, mode="a", header=False, encoding="GBK")
GetTest()
运行结果:

后语:
在接口自动化测试中,数据写入csv只是其中一步,接下来还需要对数据进行分析,比如标记出状态码不正常的有哪些,响就时间过长的有哪些。还有就是,如果接口报错,或者网络响应时间过长该如何处理。这些也需要在后续处理中增加。建议先熟悉一下pandas框架再深入后续的学习。