Python+requests
一、requests的介绍
requests的定义:requests是Python语言编写的简单易用的HTTP库,是用来做接口测试的库。
二、requests的安装
第一种方法:dos下命令安装 pip install requests
第二种方法:Pycharm中的设置点击解释器点击+号输入requests选择版本==下载
三、requests的三种请求方式
查看用法:ctrl+鼠标点击+post请求
(一)requests.post
requests.get
案例1:requests.post
url1="http://49.233.201.254:8080/cms/manage/loginJump.do"
data1={'userAccount':'admin','loginPwd':123456}
h1={'content-type':'application/x-www-form-urlencoded; charset=UTF-8'}
dx=requests.post(url=url1,data=data1,headers=h1)
print(dx.text) #查看接口的响应体{"code":"200","msg":"登录成功!","model":{}}
print(dx.url) #查看url
print(dx.cookies) #查看cookies
print(dx.status_code) #查看状态码
print(dx.json()) #将响应体转换成json格式输出
print(dx.headers) #查看请求头
print(dx.request) #查看接口请求方式
案例2:requests.get,参数在data1直接引用params
import requests
url1="http://49.233.201.254:8080/cms/manage/loginJump.do"
data1={'userAccount':'admin','loginPwd':123456}
headers1={'content-type':'application/x-www-form-urlencoded; charset=UTF-8'}
dx=requests.get(url=url1,params=data1,headers=h1)
print(dx.text) #查看接口的响应体{"code":"200","msg":"登录成功!","model":{}}
print(dx.url) #查看url
http://49.233.201.254:8080/cms/manage/loginJump.do?userAccount=admin&loginPwd=123456
print(dx.cookies) #查看cookies
print(dx.status_code) #查看状态码
print(dx.json()) #将响应体转换成json格式输出
print(dx.headers) #查看请求头
print(dx.request) #查看接口请求方式
案例3:requests.get 请求参数在url上
import requests
url1="http://49.233.201.254:8080/cms/manage/loginJump.do?userAccount=admin&loginPwd=123456"
headers1={'content-type':'application/x-www-form-urlencoded; charset=UTF-8'}
dx=requests.get(url=url1,headers=headers1)
print(dx.text) #查看接口的响应体{"code":"200","msg":"登录成功!","model":{}}
print(dx.url) #查看url
http://49.233.201.254:8080/cms/manage/loginJump.do?userAccount=admin&loginPwd=123456
print(dx.cookies) #查看cookies
print(dx.status_code) #查看状态码
print(dx.json()) #将响应体转换成json格式输出
print(dx.headers) #查看请求头
print(dx.request) #查看接口请求方式
(二)requests.request(method="post",url=url1,data=data1,headers=h1)
案例1:requests.request(method="post",url=url1,data=data1,headers=h1)
import requests
url1="http://49.233.201.254:8080/cms/manage/loginJump.do"
data1={'userAccount':'admin','loginPwd':123456}
h1={'content-type':'application/x-www-form-urlencoded; charset=UTF-8'}
dx=requests.request(method="post",url=url1,data=data1,headers=h1)
print(dx.text) #查看接口的响应体{"code":"200","msg":"登录成功!","model":{}}
print(dx.url) #查看url
print(dx.cookies) #查看cookies
print(dx.status_code) #查看状态码
print(dx.json()) #将响应体转换成json格式输出
print(dx.headers) #查看请求头
print(dx.request) #查看接口请求方式
案例2:requests.request(method="get",url=url1,params=data1,headers=h1)
import requests
url1="http://49.233.201.254:8080/cms/manage/loginJump.do"
data1={'userAccount':'admin','loginPwd':123456}
h1={'content-type':'application/x-www-form-urlencoded; charset=UTF-8'}
dx=requests.request(method="get",url=url1,params=data1,headers=h1)
print(dx.text) #查看接口的响应体{"code":"200","msg":"登录成功!","model":{}}
print(dx.url) #查看url
print(dx.cookies) #查看cookies
print(dx.status_code) #查看状态码
print(dx.json()) #将响应体转换成json格式输出
print(dx.headers) #查看请求头
print(dx.request) #查看接口请求方式
案例3:requests.request(method="get",url=url1,headers=h1)
import requests
url1="http://49.233.201.254:8080/cms/manage/loginJump.do?userAccount=admin&loginPwd=123456"
h1={'content-type':'application/x-www-form-urlencoded; charset=UTF-8'}
dx=requests.request(method="get",url=url1,headers=h1)
print(dx.text) #查看接口的响应体{"code":"200","msg":"登录成功!","model":{}}
print(dx.url) #查看url
http://49.233.201.254:8080/cms/manage/loginJump.do?userAccount=admin&loginPwd=123456
print(dx.cookies) #查看cookies
print(dx.status_code) #查看状态码
print(dx.json()) #将响应体转换成json格式输出
print(dx.headers) #查看请求头
print(dx.request) #查看接口请求方式
(三)requests.Session()
案例1:s.post(url=url1,data=data1,headers=h1)
import requests
s=requests.Session()
url1="http://49.233.201.254:8080/cms/manage/loginJump.do"
data1={'userAccount':'admin','loginPwd':123456}
h1={'content-type':'application/x-www-form-urlencoded; charset=UTF-8'}
dx=s.post(url=url1,data=data1,headers=h1)
print(dx.text) #查看接口的响应体{"code":"200","msg":"登录成功!","model":{}}
print(dx.url) #查看url
print(dx.cookies) #查看cookies
print(dx.status_code) #查看状态码
print(dx.json()) #将响应体转换成json格式输出
print(dx.headers) #查看请求头
print(dx.request) #查看接口请求方式
案例2:s.request(method="get",url=url1,headers=h1)
import requests
s=requests.Session()
url1="http://49.233.201.254:8080/cms/manage/loginJump.do?userAccount=admin&loginPwd=123456"
h1={'content-type':'application/x-www-form-urlencoded; charset=UTF-8'}
dx=s.request(method="get",url=url1,headers=h1)
print(dx.text) #查看接口的响应体{"code":"200","msg":"登录成功!","model":{}}
print(dx.url) #查看url
http://49.233.201.254:8080/cms/manage/loginJump.do?userAccount=admin&loginPwd=123456
print(dx.cookies) #查看cookies
print(dx.status_code) #查看状态码
print(dx.json()) #将响应体转换成json格式输出
print(dx.headers) #查看请求头
print(dx.request) #查看接口请求方式
案例3:s.post(url=url1,headers=h1)
import requests
s=requests.Session()
url1="http://49.233.201.254:8080/cms/manage/loginJump.do?userAccount=admin&loginPwd=123456"
h1={'content-type':'application/x-www-form-urlencoded; charset=UTF-8'}
dx=s.post(url=url1,headers=h1)
print(dx.text) #查看接口的响应体{"code":"200","msg":"登录成功!","model":{}}
print(dx.url) #查看url
http://49.233.201.254:8080/cms/manage/loginJump.do?userAccount=admin&loginPwd=123456
print(dx.cookies) #查看cookies
print(dx.status_code) #查看状态码
print(dx.json()) #将响应体转换成json格式输出
print(dx.headers) #查看请求头
print(dx.request) #查看接口请求方式
重点在保持会话关系:requests.Session()
import requests
s=requests.Session()
url1="http://49.233.201.254:8080/cms/manage/loginJump.do"
data1={'userAccount':'admin','loginPwd':123456}
h1={'content-type':'application/x-www-form-urlencoded; charset=UTF-8'}
dx=s.post(url=url1,data=data1,headers=h1)
print(dx.text) #查看接口的响应体{"code":"200","msg":"登录成功!","model":{}}
url2="http://49.233.201.254:8080/cms/manage/queryUserList.do"
data2={'startCreateDate':'','endCreateDate':'','searchValue':'','page':1}
h2={'content-type':'application/x-www-form-urlencoded; charset=UTF-8'}
dx2=s.post(url=url2,data=data2,headers=h2)
print(dx2.text)
四、requests的运用
(一)requsts.Session()保持接口会话,将用例封装起来
(二)依赖接口:cookies保持会话
import requests
s=requests.Session()
class cms_jk(object):
def init(self):
pass
def dl(self):
url1="http://49.233.201.254:8080/cms/manage/loginJump.do"
data1={'userAccount':'admin','loginPwd':123456}
h1={'content-type':'application/x-www-form-urlencoded; charset=UTF-8'}
dx=s.post(url=url1,data=data1,headers=h1)
print(dx.text) #查看接口的响应体{"code":"200","msg":"登录成功!","model":{}}
def cxyh(self):
url2="http://49.233.201.254:8080/cms/manage/queryUserList.do"
data2={'startCreateDate':'','endCreateDate':'','searchValue':'','page':1}
h2={'content-type':'application/x-www-form-urlencoded; charset=UTF-8'}
dx2=s.post(url=url2,data=data2,headers=h2)
print(dx2.text)
if name == 'main':
d=cms_jk()
d.dl()
d.cxyh()
(三)接口的断言
1.if断言
案例:
import requests
url1="http://49.233.201.254:8080/cms/manage/loginJump.do"
data1={'userAccount':'admin','loginPwd':123456}
h1={'content-type':'application/x-www-form-urlencoded; charset=UTF-8'}
dx=requests.request(method="get",url=url1,params=data1,headers=h1)
wb=dx.json() #断言需要转换成json格式
if wb["msg"]"登录": #if断言
print("ok")
else:
print("no")
2.assert断言
案例:
import requests
url1="http://49.233.201.254:8080/cms/manage/loginJump.do"
data1={'userAccount':'admin','loginPwd':123456}
h1={'content-type':'application/x-www-form-urlencoded; charset=UTF-8'}
dx=requests.request(method="get",url=url1,params=data1,headers=h1)
wb=dx.json() #断言需要转换成json格式
assert wb["msg"]"登录成功!"#if断言
print("ok")
(四)关联接口
1.通过self传递变量
案例:
import requests
import re
s=requests.Session()
class gl(object):
def init(self):
pass
def sf(self):
url1="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince"
dx1=s.get(url=url1)
print(dx1.text)
self.mc=re.findall('
print(self.mc)
def cs(self):
url2="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity"
data2={"byProvinceName":self.mc[5]}
dx2=s.post(url=url2,data=data2)
print(dx2.text)
if name == 'main':
dx=gl()
dx.sf()
dx.cs()
2.通过reture返回值来传递变量
案例:
案例2:关联接口中(通过接口reture返回值的来传递变量)
import requests
import re
s=requests.Session()
class gl(object):
def init(self):
pass
def sf(self):
url1="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince"
dx1=s.get(url=url1)
print(dx1.text)
mc=re.findall('
return mc
def cs(self):
url2="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity"
data2={"byProvinceName":self.sf()}
dx2=s.post(url=url2,data=data2)
print(dx2.text)
if name == 'main':
dx=gl()
# dx.sf()
dx.cs()
(五)token接口
案例1:提取通过转换成json格式,通过键取值 如:dx1.json()["uuid"]
import requests
s=requests.Session()
class Tk(object):
def int(self):
pass
def uid(self):
url1="http://shop.duoceshi.com/apis/auth/code"
dx1=s.get(url=url1)
print(dx1.text)
self.id=dx1.json()["uuid"]
print(self.id)
def dl(self):
url2="http://shop.duoceshi.com/apis/auth/login"
data2={"username":"admin",
"password":"e2dk2pnp7C8stFxacHQnDr4XaKxtxvLQwIsPgFYrYUGq9jHTpvKjxi6Eyib3+522af7ARGv5/jrffHCVv/qpog",
"code":"8888",
"uuid":self.id}
h2={"content-type":"application/json"}
dx2=requests.post(url=url2,json=data2,headers=h2)
print(dx2.text)
self.t=dx2.json()["token"]
print(self.t)
def buid(self):
url3="http://shop.duoceshi.com/apis/api/menus/build"
h3 = {'authorization': self.t}
dx3=requests.get(url=url3,headers=h3)
print(dx3.text)
if name == 'main':
dx=Tk()
dx.uid()
dx.dl()
dx.buid()
案例2:提取通过转换成json格式,通过re正则提取
import requests
import re
s=requests.Session()
class Tk(object):
def int(self):
pass
def uid(self):
url1="http://shop.duoceshi.com/apis/auth/code"
dx1=s.get(url=url1)
print(dx1.text)
self.id=''.join(re.findall('"uuid":"(.+?)"',dx1.text))
print(self.id)
def dl(self):
url2="http://shop.duoceshi.com/apis/auth/login"
data2={"username":"admin",
"password":"e2dk2pnp7C8stFxacHQnDr4XaKxtxvLQwIsPgFYrYUGq9jHTpvKjxi6Eyib3+522af7ARGv5/jrffHCVv/qpog",
"code":"8888",
"uuid":self.id}
h2={"content-type":"application/json"}
dx2=requests.post(url=url2,json=data2,headers=h2)
self.t=''.join(re.findall('"token":"(.+?)"',dx2.text))
print(self.t)
def buid(self):
url3="http://shop.duoceshi.com/apis/api/menus/build"
h3 = {'authorization': self.t}
dx3=requests.get(url=url3,headers=h3)
print(dx3.text)
if name == 'main':
dx=Tk()
dx.uid()
dx.dl()
dx.buid()
浙公网安备 33010602011771号