1 接口自动化(python + requests)
参考网站:
https://www.bilibili.com/video/BV1eb411P7tV?p=4
https://requests.readthedocs.io/zh_CN/latest/
1.1 安装requests模块
pip install requests
1.2 get请求
1)get基本语法:requests.get(url, params=数据)
参数:使用params参数传参,数据格式为字典
- 按get请求参数格式分类:
(1)不带参数的get请求
(2)带参数的get请求:
(a)导入requests
(b)准备接口三要素:请求地址、请求方式、请求参数(字典格式)
(c)获取返回值
(3)实例:
1.3 post请求
1)post基本语法:requests.post(url, data=None, json=None, **kwargs)
不同的传参方式,使用不同的参数。
2)按post请求参数格式分类:
(1)x-www-form-urlencoded格式
参数:使用data参数传参,数据格式为字典
语法:requests.post(url, data=参数, **kwargs)
参数使用data时,requests方法会自动在请求header中将Content-Type设置为:application/x-www-form-urlencoded,下面代码中request_header不添加Content-Type也没有问题
(2)json格式
参数:使用json参数传参,数据格式为字典
语法:requests.post(url, json=数据, **kwargs)
参数使用json时,requests方法会自动在请求header中将Content-Type设置为:application/json,下面代码中request_header不添加Content-Type也没有问题
(3)form-data格式(很少使用)
(a)安装requests_toolbelt: pip install requests_toolbelt
(b)代码
参数:使用data参数传参,数据格式为字典
语法:requests.post(url, data=数据, headers=消息头, **kwargs)
(4)binary格式(很少使用)
参数:使用files参数传参,数据格式为字典,字典的值是文件内容
语法:requests.post(url, file=数据, **kwargs)
3)post方法参数查询
(1)按住ctrl键,单击post,自动打开api.py文件,并定位到post方法说明
(2)在post方法说明中查找参数,我们只能找到url、data、json、kwargs。其它参数都被kwargs接收了。
按住ctrl键,单击request,自动定位到request方法说明
(3)在这里我们可以看到所有参数的信息
常用参数:
(a)json:使用json格式传递参数时使用
(b)headers:请求消息头,字典格式。
python发送请求,默认User-Agent是python-requests,有些网站会进行屏蔽。
我们可以在header中将User-Agent设置成Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36,伪装成谷歌浏览器。
(c)verify:verify=false,访问https时可以不用导入证书
(d)timeout:设置超时时间
(e)files:传参方式为binary时,可以上传文件
1.4 返回值
1)代码:
2)返回值
(1)返回值response的数据类型是对象:<class 'requests.models.Response'>
(2)response.text:数据类型是字符串,以文本格式显示返回数据
(3)response.json():数据类型是字典,以json格式显示返回数据,只适用于json格式返回值
使用json.dumps(字典转换成json字符串)和json.loads(转json字符串换成字典)可以实现,字典数据和json数据之间的转换。
(4)response.status_code返回的状态码:200
(5)response.header:响应头数据,字典类型
(6)response.content:响应数据源码,数据类型字节(bytes)
1.5 接口测试框架设计(requests、unittest)
1.5.1 测试项目文件夹及文件夹中的文件
1)common文件夹
send_method.py:封装接口请求方法
get_keyword.py:从返回值中通过关键字获取数据
2)interface文件夹
一个接口对应一个py文件:
对该接口的请求:用于单接口测试
根据业务获取接口返回值:用于关联接口测试
3)script:测试用例
4)data:测试数据
5)report:测试报告
1.5.2 send_method封装,接口请求方法,接收返回数据
1)编写依据:
(1)项目接口文档
(2)接口三要素:请求方式+请求地址、请求参数、返回值
2)代码编写
1.5.3 get_keyword封装,从返回值中通过关键字获取数据
1)JsonPath
(1)JsonPath介绍
用来解析多层嵌套的json数据; JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,它可以通过键获取值,返回列表。
JsonPath 对于 JSON 来说,相当于 XPath 对于 XML
(2)安装jsonpath:pip install jsonpath
(3)使用方法如:
import jsonpath
res=jsonpath.jsonpath(原数据, jsonpath表达式)
jsonpath表达式示例:'$..关键字'
嵌套n层也能取到所有key_name信息,其中:“$”表示最外层的{},“..”表示模糊匹配,当传入不存在的key_name时,程序会返回false。
(4)JsonPath与XPath语法对比:
(5)JsonPath代码编写
使用python编写,代码复杂,不够灵活。
使用JsonPath模块编写,简单灵活
2)封装
1.5.4 interface封装,一个接口对应一个py文件
1.5.5 script封装,unittest测试脚本
测试结果:
1.5.6 扩展
1)参数化(excel、csv、mysql、@ddt装饰器)
2)关联接口测试
第二个接口请求中,使用第一个接口的返回的数据
例如:登录后,使用登录时产生的token,进行操作。