接口自动化
一、接口测试和接口自动化测试场景
目前主流的接口测试工具:( 中小型公司、项目 )
Postman+Newman+Git+Jenkins
Jmeter+Ant+Git+Jenkins
目前主流的接口自动化测试技术:( 大型的公司、项目)
python+requests+pytest+allure+jenkins
二、requests库简介
requests是用来发送http请求以及接收http响应的python第三方库,主要用于接口自动化测试
#安装:
pip install requests
三、requests库常用的方法
1.requests.get()
2.requests.post()
使用方式:post(url, data=None, json=None, **kwargs) #url是接口地址,data用于传参,json也用于传参
data和json传参选哪个:主要是通过请求头Content-Type来区分
Content-Type:作用是服务器要求传入的报文的内容类型
四大请求:请求方式,请求路径,请求头,请求正文
在postman中四种传参方式对应的Content-Type的值如下:
form-data对应的Content-Type : multipart/form-data; boundary=<calculated when request is sent> #文件上传
x-www-from-urlencoded对应的Content-Type : application/x-www-form-urlencoded #表单提交
raw分为以下几种:
text对应的Content-Type : text./plain
javscript对应的Content-Type : application/javascript
json对应的Content-Type : application/json
html对应的Content-Type : text/html
xml对应的Content-Type : application/xml
binary对应的Content-Type : application/binary
Postman官网下载地址
Postman官网下载地址 https://www.postman.com/downloads/:
Postman for MAC https://dl.pstmn.io/download/latest/osx
Postman for windows 64 https://dl.pstmn.io/download/latest/win64
Postman for windows X86 https://dl.pstmn.io/download/latest/win32
Postman for linux https://dl.pstmn.io/download/latest/linux64

在requests中data和json传参跟Content-Type的关系如下:
1.服务器要求Content-Type:application/x-www-form-urlencoded,则需要,data传参:报文是dict类型
服务器要求Content-Type:text./plain,则需要,data传参:报文是str类型
2.服务器要求Content-Type:application/json,则需要,json传参:报文可以是dict类型
#可以用看接口文档或者用Fidder抓包看Content-Type是什么决定用data还是json
所以:
data:可以传纯键值对的dict(非嵌套的dict),也可以传str格式(如果是嵌套字典那么就需要使用ison.dumps()把嵌套字典转化成ison字符串传参)
json:可以传任何形式的dict( 包括嵌的dict)
#json.loads() 把json字符串转化成dict格式
#json.dumps() 把dict格式转化成ison字符串
3.requests.put()
4.requests.delete()
5.requests.request()
可以发送所有类型的请求:get,post,put,delete
不管是get还是post还是put和delete都是调用的requests.request方法。而requests.reques方法调的是session.request方法。
method 请求方式
url 请求路径
params=None get方式传参
data=None post方式传参
json=None post方式传参
headers=None 请求头
cookies=None 请求cookie
files=None 文件上传
四、requests模块返回的response对象详解
res.json() 获得返回的字典格式的数据
res.text 获得返回的字符串格式的数据
res.content 获得返回的bytes(字节)类型的数据
res.status_code 返回状态码
res.reason 返回状态信息
res.cookies 返回cookie信息
res.headers 返回响应头
res.request.xxx 返回请求的数据,如:请求头,请求参数等
五、请求必须带请求头的接口,以及需要cookie鉴权和session鉴权的接口
90%以上的基于web的接口都有cookie鉴权。
两种解决方式
1使用ookie关联
2使用session关联 一般用这种方式