1、请求方法
主要的请求方法有: GET、POST、DELETE、PUT 、HEAD 等方法
最最常用的方法就是: GET方法、POST方法
1.1、GET方法:
●GET方法提交数据不安全,数据置于请求行,浏览器地址栏可见;
●GET方法URL长度每个浏览器限制数量不同,最后在2000字符以内
●GET方法速度快
●默认的请求方法,不需要提交大量数据、无敏感、保密数据时使用
●可能会被缓存
●请求可能会被保留在浏览器历史记录中
1.2、POST方法:
●POST方法提交数据安全,数据置于消息主体内,浏览器地址栏不可见
●POST方法提交的数据大小没有限制
●POST方法速度慢
●需要提交大量数据、有敏感、保密数据时使用
●不会被缓存
●请求不会被保留在浏览器历史记录中
3.4请求/响应头中,重要的参数
(一) Content-Type参数
Content-Type,叫:是Internet Media Type,互联网媒体类型。存在于请求中或响应中:
●如果出现在请求中,则表示:告诉服务端客户端实际发送的数据类型。
●如果出现在响应中,则表示:告诉客户端服务端实际发送的数据类型。
在[请求]中,常见的数据类型有
●application/x-www-form-urlencode-----> 以“键-值”对的方式组织的数据
●application/json ---- JSON字符串格式提交数据
●multipart/form-data----> 一般需要上传文件的表单则用该类型
一、表单格式详解
[urlencoded格式] :又叫form格式, 或者是x-www-form-urlencoded格式。
口诀:表单格式是由键值对组成。键和值之间用=。多个键值对之间用&。例如: name= ZhangSan&age= 16
二、JSON格式详解
[json格式] :
口诀1: JSON有对象、数组两种结构,有字符串、数字、逻辑值、空值四种数据类型
口诀2:用大括号{}表示对象。对象是由属性组成的。属性是由键值对组成的。键和值之间用冒号隔开。属性之间用逗号隔开。键必须用双引号引起来。
口诀3:用中括号[]表示数组。数组由单独的值组成
口诀4: JSON的灵活就灵活在: JSON可以嵌套
口诀1: params参数,如果传入的是字典,自动编码为表单。一般get请求需要
口诀2: data参数,如果传入的是字典,自动编码为表单。
口诀3: data参数,如果传入的是字符串,按原格式直接发布出去。
口诀4: json参数,如果传入的是字典,自动编码为json字符串。
口诀5: json参数,如果传入的是字符串,按原格式基础上添加双引号发布出去。
口诀6: headers参数, 传递的是字典格式
接口测试基本结构:
import requests
url = 'http://192.168.XX.XX:1000/xxx/xxx/xxx'
head = {"token": "可用的token"}
def login(name,password):
# 用户的账户密码作为参数传入,具体需要传入什么参数以接口文档为准
data = {
"username": name,
"psd": password
}
res = requests.post(url, json=data,headers=head)
return res.json()
if __name__ == '__main__':
login('makabaka_222', 123456)
具体使用什么方法参考接口文档
方法:
requests.get
requests.post
requests.put
requests.delete
参数:
url
headers:请求头,看接口文档中是否需要请求头
cookies
params:get方法才有
data,post方法传请求体
json,post方法传json格式的请求体
转化:
字典–>json格式,使用json.dumps(字典)
json格式–>字典,使用json.loads(json格式)
==========================================================================================
获取json文件的数据
def get_data():
with open('./wechatId.json','r',encoding='utf8')as fp:
json_data = json.load(fp)
# print('这是文件中的json数据:',json_data)
return json_data['RECORDS']
======================================================================
密码需要进行md5加密
import hashlib
def get_md5(password):
#1-实例化加密对象
md5 = hashlib.md5()
#2- 进行加密操作
md5.update(password.encode('utf-8'))
#3- 返回加密后的值
return md5.hexdigest()
======================================================================
处理https警告
requests.packages.urllib3.disable_warnin gs()
def login():
#1- url
url = f'{HOST}/XX/XX/XX'
#2- 请求体
payload = {'username':'makabaka_222','password':'123456'}
#3- 请求
resp = requests.post(url,data=payload,verify = False)
#不使用SSL
return resp.text
pytest
1、.py测试文件必须以test_开头(或者以_test结尾)
2、测试类必须以Test开头,并且不能有init方法
3、测试方法必须以test_开头
4、断言必须使用assert