1、介绍
目前市面上主流的接口测试工具:(适用于中小型公司或项目)
postman+Newman+git+Jenkins
jmeter+ant+git+Jenkins
目前主流的接口自动化测试技术:(适用于大小型公司或项目)
python+requests+pytest+allure+jenkins
2、requests库介绍
requests是用来发送http请求和接收http响应的python第三方库,主要用于接口自动化测试
pip install requests
3、requests库常用的方法
1)requests.get() //url是接口地址,params用于传参
2)requests.post() //url是接口地址,data用于传参,json用于传参
data和json传参的区别:主要通过请求头Content-Type进行区分。
Content-Type:作用是服务器要求传入的报文内容类型。
请求:请求方式、请求路径、请求头、请求正文
postman四种传参方式对应的Content-Type的值如下:
Content-Type | ||
form-data | multipart/form-data;boundary=<calculated when request is sent> | 文件上传 |
x-www-from-urlencodede | application/x-www-form-urlencodede | 表单提交 |
raw | text:text/plain; javascript:application/javascript; json:application/json; html:text/html; xml:application/xml | |
binary | application/binary |
data和json传参以及Content-Type的关系如下:
①data传参:报文是dict类型,默认Content-Type:application/x-www-form-urlencodede
data传参:报文是str类型,默认Content-Type:text/plain
②json传参:报文可以是dict类型也可以是str类型(dict类型偏多),默认Content-Type:application/json
总结:data可以传纯键值对的dict(非嵌套的dict),也可以传str格式(如果是嵌套自动,需要使用json.dumps() 转化成json字符串)。json可以传任何形式的字典(包含嵌套的dict)。
json.loads() //把json字符串转化成dict格式
json.dumps() //把dict格式转化成json字符串
3)requests.put()
4)requests.delete()
5)requests.request() //可以发送所有类型的请求:post、get、put、delete
总结:不管是get还是post还是put和delete,都是调用的requests.request方法,而requests.request方法调用的是session.request()。
4、requests模块返回的response对象
res.json() //获取返回的字典格式的数据
res.text() //获取返回的字符串格式的数据
res.content() //获取返回的bytes字节类型的数据
res.status_code() //获取返回的状态码
res.reason() //获取返回额状态信息
res.cookies() //获取返回的cookies信息
res.headers() //获取返回的响应头
res.request.XXX() //获取请求数据,例如:请求头,请求参数等
5、请求必须带请求头的接口,以及需要cookie鉴权和session鉴权的接口
两种解决方式:
1)使用cookie关联
2)使用session关联:常用