web项目的接口都会存在cookie关联,requests.request()的每个请求是独立的,session.request()会自动关联所有请求的cookie信息。
import requests
class SendRequest:
# 回话对象可以自动管理cookie关联,如果采用下面的请求方法会重复请求对象,不利于封装
sess = requests.session()
# requests.request()
def all_send_request(self, method, url, **kwargs):
print("请求方式:%s" % method)
if "json" in kwargs.keys():
print("请求json参数:%s" % kwargs["json"])
res = self.sess.request(method, url, **kwargs)
# 会报Method 'all_send_request' may be 'static'错误,因为在类中所声明的方法没有使用类中的变量(self)
# res = SendRequest.sess.request(method, url, **kwargs)
return res
import pytest as pytest
from RequestsModule.common.send_request import SendRequest
class TestApi:
# 类变量也叫全局变量,如被导入到别的测试类中,会让被导入的测试类不止执行本类中的测试用例,导入的测试类中的测试用例也会执行
access_token = ""
# 获取鉴权码
def test_get_token(self):
url = "https://api.weiixn.com/token"
datas = {
"grant_type": "client_credential",
"appid": "wx32497320974",
"secret": "dh2983yr4fh9734."
}
res = SendRequest().all_send_request(method='get', url=url, params=datas)
result = res.json()
TestApi.access_token = result["access_token"]
# 编辑标签接口
def test_edit_flag(self):
url = "https://api.weiixn.com/update?access_token=" + TestApi.access_token
# json是字典的字符串格式,两者可以相互转换
json = {}
# 键值对
data = None
res = SendRequest().all_send_request(method='post', url=url, json=json)
# 文件上传
def test_file_upload(self):
url = "https://api.weiixn.com/update?access_token=" + TestApi.access_token
datas = {
# 文件路径也可以写为open("D:\\snipaste")
"media": open(r"D:\snipaste", mode="rb")
}
res = SendRequest().all_send_request(url=url, files=datas)
if __name__ == '__main__': # 入口
pytest.main('-vs')