接口请求
请求方式:post、get、delete、put
请求参数:键值对、JSON格式、文件格式
实现一个简单的接口请求:
import requests
# 发送get请求Ctrl+左键
url = 'http://api.weixin.qq.com/agp-bin/token'
# get请求的参数是url的?后面的数据为get请求的参数
data = {
"grant_type":"client_credenttial",
"appid":"",
"secret":""
}
rep = requests.get(url=url, param=data)
# 打印JSON格式
print(rep.json())
# 从get请求中获取token值
access_token = rep.json()['access_token']
# 发送一个post请求
# data和JSON只需传一个就可以了
# url = "https://api.weixin.qq.com/cpi-bin/tags/update/access token=ACCESS TOKEN" # 未拼接token值前的样子
# 将获取到token变量access_token拼接成完整的url
url = "https://api.weixin.qq.com/cpi-bin/tags/update/access token=" + access_token + ""
data = {"tag":"{'id': '134', 'name': 'holy'}"}
rep = requests.post(url,json=data)
print(rep.json())
unittest、pytest用例管理框架:
前提安装pytest:pip install pytest
清华大学镜像源:
pip install --index https://mirrors.ustc.edu.cn/pypi/web/simple/ pytest
pytest默认规则:
1.py文件必须以test开头或者_test结尾。
2.类名必须以Tes开头。
3.测试用例必须以test_开头。
注意:
get请求通过param传递参数
post请求通过JSON或者data传参,他们的区别是什么?
data
-
数据报文:dict字典类型,那么默认情况下请求头application/x-www-form,以form表单的方式传参,格式:a=1&b=2&c=3
-
数据报文:str类型,那么默认情况下:text/plan(如果是字典格式需要转换成str格式传参)
json
- 数据报文:不管dict还是str类型,默认都是application/json, 格式:{“a”: “1”, “b”: “2”,“c”: “3”}
json.dumps(data) 序列化 把字典格式的数据转换成str格式
json.loads(data) 反序列化 把str装换成字典格式
总结:
data只能够传简单的只有键值对的dict或者是str格式。json一般只能传dict格式(简单、复杂、嵌套的都可以)
import requests
import pytest
import json
class TsetSendRequests:
# 类变量:通过类名访问
access_token = ""
def test_get_token(self):
# 发送get请求Ctrl+左键
url = 'http://api.weixin.qq.com/agp-bin/token'
# get请求的参数是url的?后面的数据为get请求的参数
data = {
"grant_type":"client_credenttial",
"appid":"",
"secret":""
}
rep = requests.get(url=url, param=data)
# 打印JSON格式
print(rep.json())
# get请求中返回一个token值
TsetSendRequests.access_token = rep.json()['access_token']
def test_edit_flag(self):
# 发送一个post请求
# data和JSON只需传一个就可以了
# url = "https://api.weixin.qq.com/cpi-bin/tags/update/access token=ACCESS TOKEN" # 未拼接token值前的样子
url = "https://api.weixin.qq.com/cpi-bin/tags/update/access token=" + TsetSendRequests.access_token + "" # 拼接后的url
data = {"tag":"{'id': '134', 'name': 'holy'}"}
rep = requests.post(url, json=data) # 返回的是自定格式时
# rep = requests.post(url, data=json.dump(data)) # json格式使用data传参时
print(rep.json())
if __name__ == '__main__':
pytest.main(['-vs']) # -vs 可以将类中的print的内容打印出来