申明:
1、做接口自动化一般不会通过request去发送请求,而是通过session发送请求,这样子 的话就不用考虑接口的关联。
2、request.request()和session.request()的区别在于:前者的每个请求都是独立的,后面会关联所有的请求的cookies信息(类似于jmeter的http cookies管理器)
class TestLogin:
token = “” #定义一个为空的类变量
access_token = “” #定义一个为空的变量
csrf_token =“” #定义一个为空的变量
cookies = “”
def test_phpwind_start(self): # 访问php首页
url = “http://47.107.116.139/phpwind/”
res = requests.post(url)
result = res.text
TestLogin.csrf_token = re.search(‘name=“csrf_token” value=“(.*?)”’,result)[1]
print(TestLogin.csrf_token)
TestLogin.cookies= res.cookies
def test_phpwind_login(self): # phpwind登录接口
url = "http://47.107.116.139/phpwind/index.php?m=u&c=login&a=dorun"
headers = {
"Accept":"application/json, text/javascript, /; q=0.01",
"X-Requested-With":"XMLHttpRequest"
}
data = {
"username":"cc,
"password": "17c",
"csrf_token": TestLogin.csrf_token,
"backurl": "http://47.107.116.139/phpwind/",
"invite": ""
}
res = requests.post(url, headers= headers,data=data,cookies=TestLogin.cookies)
result = res.json,TestLogin.cookies
print(result)
if name == ‘main’:
pytest.main()
2、进行统一的处理
import re
import jsonpath
import pytest
import requests
class TestLogin:
token = "" #定义一个为空的类变量
access_token = "" #定义一个为空的变量
csrf_token ="" #定义一个为空的变量
cookies = ""
sess = requests.session() #创建一个session的对象
def test_login_b2c(self): #登录测试用例
url = "http://101.34.221.219:8010/api.php?s=user/login"
params = {
"application":"app",
"application_client_type":"h5"
}
data = {
"accounts": "cc",
"pwd": "17cc8",
"type": "username"
}
res = TestLogin.sess.request(method="post",url=url,json=data,params=params) #sesssion关联请求
print(res.json())
result = res.json()
TestLogin.token = result["data"]["token"] #类变量通过类名来访问
print(TestLogin.token)
def test_order_list(self): # 订单列表接口
url = "http://101.34.221.219:8010/api.php?s=order/index"
params = {
"application": "app",
"application_client_type": "h5",
"token":TestLogin.token
}
data = {
"page": 1,
"keywords": "",
"status": "-1",
"is_more": 1
}
res = TestLogin.sess.request(method="post",url=url,json=data,params=params)
# res = requests.post(url, json=data, params=params)
print(res.json())
def test_get_access_token(self): # 获取微信公众号access_token接口
url = "https://api.weixin.qq.com/cgi-bin/token"
params = {
"grant_type": "client_credential",
"appid": "wx....79866f",
"secret": "e68.....2c86....7056817"
}
res = TestLogin.sess.request(method="get",url=url, params=params)
# res = requests.get(url, params=params)
result = res.json()
TestLogin.access_token=result["access_token"]
print(TestLogin.access_token)
def test_file_upload(self): # 文件上传的接口
url = "https://api.weixin.qq.com/cgi-bin/media/uploadimg"
params = {
"access_token": TestLogin.access_token
}
data ={
"media": open(r"F:\zidonghua.png",mode="rb")
}
res = TestLogin.sess.request(method="post",url=url, files=data, params=params)
# res = requests.post(url, params=params,files=data)
result = res.json
print(result)
def test_phpwind_start(self): # 访问php首页
url = "http://47.107.116.139/phpwind/"
res = TestLogin.sess.request(method="post",url=url)
# res = requests.post(url)
result = res.text
TestLogin.csrf_token = re.search('name="csrf_token" value="(.*?)"',result)[1]
print(TestLogin.csrf_token)
TestLogin.cookies= res.cookies
def test_phpwind_login(self): # phpwind登录接口
url = "http://47.107.116.139/phpwind/index.php?m=u&c=login&a=dorun"
headers = {
"Accept":"application/json, text/javascript, /; q=0.01",
"X-Requested-With":"XMLHttpRequest"
}
data = {
"username":"cc",
"password": "cc228",
"csrf_token": TestLogin.csrf_token,
"backurl": "http://47.107.116.139/phpwind/",
"invite": ""
}
res = TestLogin.sess.request(method="post",headers=headers,url=url, data=data)
res = requests.post(url, headers= headers,data=data,cookies=TestLogin.cookies)
result = res.json,TestLogin.cookies
print(result)
if name == ‘main’:
pytest.main()