前言:

在接口测试中,接口的请求参数不可能一直一成不变,如果只有一两个接口的时候,可以直接在代码中更改对应的值,但如果接口多达上百个的时候,一行一行的在代码中改参数, 是极其痛苦的一件事。这个时候,使用数据参数化的优点就体现出来了,只需要把所有参数写到同一个地方,任一参数改变时,到指定地方修改该参数的值就可以了。

数据参数化的方式:

1、使用txt文件保存数据,这样的优点在于txt文件易于读取,不论是linux还是windows下都容易打开。

2、使用csv文件保存,优点在于,可以使用excel软件打开,这样看上去数据会比较清晰。

3、使用json文件(注意是文件),这样的优点也是可以直接查询key值得到对应的values。

但是!但是!但是!

从txt和csv文件中读取到的数据是这样的:



[request_id,nonce,aa,bb,cc]



可以看出是一个数组类型,那么提取值时就必须使用list[0],list[1],list[2]这样的方式提取,但真正的问题在于,你记得第一个对应的是哪一个值吗?如果在两个参数中间再增加一个参数,是不是就全乱了?所以理论上应该使用json文件做数据参数化,但是!但是!但是!json数据不支持注释,数据一多,也是乱七八糟的。那么该如何处理呢?

Python字典参数化:

其实,我们不必要缘木求鱼,也不必舍近求远,有时候我们寤寐思服,求而不得的东西,往往就在你容易忽略的地方,Python语言本身就提供了一个字典类型。使用字典做数据参数化,只需要dict["name"]就可以了。那么接下来就是实际的操作。

示例:

新建一个文件Data.py,将以下代码复制进去:



# 多个不同的参数时写成多个不同的字典即可
data={
    "url":"https://openapi.dvr163.com/message/nonce", # url地址
    "method":"get",#请求参数
}



在测试的demo中导入并使用:



import requests
import pandas
import time
from Data import data

#http请求demo
def GetTest(data):
    #接口请求
    url=data["url"]
    Param={ # 传递的参数,字典类型,所有参数写在这里即可
        "method":data["method"]
    }
    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(data)

"""
  参考以上代码即可实现数据参数化,将字典单独存放到一个文件的好处是方便后面修改数据
  在函数内调用时,记得要把参数传入,即 def GetTest(data):(注意括号中的data)
"""



目录结构:




python 参数用完后如何删除 python后面的参数_数据


总结:

数据参数化只须使用pyhton提供的字典类型即可。根据key值获取到相应的值,逻辑清晰也易于脚本的维护。