本文记录关于自动化测试的基础学习内容
使用的语言:python
从这里开始介绍:request的相关内容,后续一步一步介绍封装
下面一节课开始真正封装代码
一、不同请求及传参方式
1、requests.get(url, params=None, **kwargs)
通过params传参
2、requests.post(url, data=none, json=none, **kwargs)
通过data或json传参
3、requests.put(url, data=none, **kwargs)
通过data传参
4、requests.delete(url, **kwargs)
5、requests.request(method, url, **kwargs):
发送任意请求,上述请求都通过requests.request()方法
参数列表:
method:请求方式
url:请求路径
params:get方式传参
data:post\put\patch方式传参
json:post方式传参
headers:请求头
cookies:请求cookie信息
files:文件上传
auth:鉴权
timeout:超时
allow_redirects:允许重定向
proxies:代理
verify:是否验证证书
stream:文件下载
cert:CA证书
二、常见请求头
1、Content-Type:multipart/form-data——传文件或键值对,file传参默认请求头
2、Content-Type:application/x-www-form-urlencoded——传表单,data传参默认请求头
3、Content-Type:application/json——传有嵌套的字典,json传参默认请求头
三、request执行返回response对象
res = requests.XXXXXXXXX
1、res.text——返回字符串格式的数据
2、res.content——返回bytes字节类型的数据(如图片、文件)
3、res.json()——返回字典格式的数据
4、res.status_code——返回状态码
5、res.reason——返回状态信息
6、res.cookies——返回cookie信息
7、res.headers——返回响应头信息
8、res.request.headers——返回请求头信息
四、传参示例
1、序列化和反序列化:当需要将数据存入文件或者通过网络发送时,需要将数据对象转换为字节流,即对数据序列化。
序列化:
json.dumps(data)
将字典转换为字符串
反序列化:
json.loads(data)
将字符串转为字典
2、post请求
data传参:(表单)
默认请求头:Content-Type:application/x-www-form-urlencoded
数据格式:key1=value1&key2=value2
当使用 json.dumps(data) 转换后:改为:Content-Type:application/json
注意:
json.dumps():将Python数据结构转换为JSON,即dict类型转成str类型。
json.dump():编码,用于将dict类型的数据转成str类型,并写入到json文件。
json.loads():将JSON编码的字符串转换回Python数据结构,即str类型转换成dict类型。
json.load():解码,用于从json文件中读取数据
json传参:(嵌套的字典)
默认请求头:Content-Type:application/json
files传参:(文件)
默认请求头:Content-Type:multipart/form-data
data = {
“media”:open(r"文件路径", “rb”)
}
五、取值
1、json取值
json_data[‘键’][‘键’]
2、正则取值
obj = re.search('左边界(.?)右边界’, return_data )
(re是第三方的库 需要取的值用 (.?) 替代)
obj.group(1) 表示匹配的第一个值
六、需要带cookie、请求头的接口
第一种方式:
1、设置全局变量,存cookie信息
cookie = res.cookies
2、后续的接口传参:
cookies = cookie
第二种方式(常用):
1、定义session类属性
session = requests.session()
2、通过session发送请求
res = 类名.session.requests(method=, url=)
session表示同一个会话,同一个会话里面自动关联cookie
可以考虑定义在:conftest.py文件中,其他用例都可以调用