做接口测试最常接触到的就是requests,这是python中的第三方库,处理URL相关信息非常方便。
接口通过get请求并得到响应参数,如下:
rsp = requests.get(url=url, params=params)
url:需要get请求访问的网址
params:请求中需要的参数,以字典的形式保存
接口通过post请求并得到响应参数,如下:
rsp = requests.post(url=url, json=data)
post请求的参数较为特殊,可以先看下源码:
可以看到post请求有三个参数,那为什么我举例的时候只写了两个呢?
因为data和json两者使用场景不同,一般只写一个就可以了。
data:可以传字典、列表、字符串等类型的数据。当传字典类型数据时,表示要以from表单的形式传参,例如:a=1&b=2&c=3
json:传json数据(字典和字符串类型都可),默认application/json
说到这里就不得不提两个函数了:
json.dumps(data)
序列化:把dict格式的数据转换成str类型
当data时字典格式的数据,而且是嵌套的字典格式时,data参数不支持这类数据,就需要将它转化为json可以处理的数据格式,这是比较常见的,如下:
rsp = requests.post(url=url, json=json.dumps(data))
json.loads(data)
反序列化:讲str类型的数据转换为dict类型
接口的delete请求:
rsp = requests.delete(url=url)
接口的put请求:
rsp = requests.put(url=url, data=data)
这是requests中最核心的函数,其实从上面函数的源码中就可以看出来,所有方法都是通过调用request方法实现的。
先来看下源码:
它主要有两个参数:method和url,从注释中可以看出,method可以是“GET”、“POST”等等
get请求也可以这样写:
rsp = requests.request(method="GET", url=url)
post请求也可以这样写:
rsp = requests.request(method="POST", url=url, json=data)
还有比较特殊的就是文件的上传/下载:
从源码中其实是可以看出来有file参数的,这就是上传文件时需要的。如下:
data = {
"param": open(r"E:\\file.txt","rb")
}
rsp = requests.request(method="POST", url=url, files=data)
文件是以二进制流的形式传递的,而不是文件名。