Python(request库)使用详解与优化指南
request库
一、request库介绍
(1)简介
requests是用python语言编写的简单易用的http库,用来做接口测试的库
(2)接口测试自动化库有哪些?
requests、urllib 、urllib2、urllib3、 httplib 等(最受欢迎的是requests)
(3)安装request库
方式一:
dos下pip: 命令:pip install requests

方法二:
pycharm 中 setting下载

(4)组建一个接口需要参数?
a、url (域名+端口+接口路径)
c、请求头 (请求类型heards)
d、请求参数(请求体:账号,密码)
二、requests中的运行
1、导入requests 模块
2、运行的三种方法:
(1)第一种方法:
requests.post(url=url,data=data,json=heardes)

ctrl 鼠标点击 post查看方法
案例:
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"}
jk1=requests.post(url=url1,data=data1,json=h1)
print(jk1.text) #打印响应体
print(jk1.json()) #响应体转换成json格式
print(jk1.cookies) #打印cookie
print(jk1.status_code)# 打印状态码
print(jk1.request) #打印接口请求
print(jk1.url) #打印url
第一种方法中的get请求:
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"}
jk1=requests.get(url=url1,params=data1,headers=h1)
print(jk1.text) #打印响应体
print(jk1.json()) #响应体转换成json格式
print(jk1.cookies) #打印cookie
print(jk1.status_code)# 打印状态码
print(jk1.request) #打印接口请求
print(jk1.url) #打印url


get参数接在url后面
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"}
jk1=requests.get(url=url1,headers=h1)
print(jk1.text) #打印响应体
print(jk1.json()) #响应体转换成json格式
print(jk1.cookies) #打印cookie
print(jk1.status_code)# 打印状态码
print(jk1.request) #打印接口请求
print(jk1.url) #打印url
(2)第二种调用方法:
requests.request(请求方法,url,headers=h1)

案例1:
requests.request(get,url,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"}
jk1=requests.request("get",url1,headers=h1)
print(jk1.text) #打印响应体
print(jk1.json()) #响应体转换成json格式
print(jk1.cookies) #打印cookie
print(jk1.status_code)# 打印状态码
print(jk1.request) #打印接口请求
print(jk1.url) #打印url
案例2:
requests.request(post,url,data,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"}
jk1=requests.request("post",url=url1,data=data1,headers=h1)
print(jk1.text) #打印响应体
print(jk1.json()) #响应体转换成json格式
print(jk1.cookies) #打印cookie
print(jk1.status_code)# 打印状态码
print(jk1.request) #打印接口请求
print(jk1.url) #打印url
(3)第三种 方法:保持会话关系
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"}
jk1=s.request("post",url=url1,data=data1,headers=h1)
print(jk1.text) #打印响应体
#查询用户接口
url2="http://49.233.201.254:8080/cms/manage/queryUserList.do"
data2={
'startCreateDat':'',
'endCreateDate':'',
'searchValue':'',
'page':'1'
}
h2={"Content-Type":"application/x-www-form-urlencoded"}
jk2=s.post(url=url2,data=data2,headers=h2)
print(jk2.text)
request断言
一、if断言
案例:
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"}
jk1=s.request("post",url=url1,data=data1,headers=h1)
wb=jk1.json()
print(jk1.json())
if wb["msg"]=="登录成功!":
print("ok")
else:
print("no")
二.assert断言
h1={"Content-Type":"application/x-www-form-urlencoded"}
jk1=s.request("post",url=url1,data=data1,headers=h1)
wb=jk1.json()
print(jk1.json())
assert wb["msg"]=='登录成功'
print(jk1.cookies)

封装接口
案例1:requests.Session()
import requests
s=requests.Session()
class Cms(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"}
jk1=s.request("post",url=url1,data=data1,headers=h1)
print(jk1.json())
def yh(self):
url2="http://49.233.201.254:8080/cms/manage/queryUserList.do"
data2={
'startCreateDat':'',
'endCreateDate':'',
'searchValue':'',
'page':'1'
}
h2={"Content-Type":"application/x-www-form-urlencoded"}
jk2=s.request("post",url=url2,data=data2,headers=h2)
print(jk2.text)
if __name__ == '__main__':
dx=Cms()
dx.dl()
dx.yh()
案例2:cookies 保持会话


代码:
import requests
class Cms(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"}
jk1=requests.request("post",url=url1,data=data1,headers=h1)
print(jk1.text)
c=str(jk1.cookies)
print(c) #<RequestsCookieJar[<Cookie JSESSIONID=DAB3F94092C907F3BAD009410A8778E0 for 49.233.201.254/cms/>]>
self.cookie=c.split(" ")[1] #JSESSIONID=6D60B90E937058D8B91B66A18671A4CB
# print(cookie)
def yh(self):
url2="http://49.233.201.254:8080/cms/manage/queryUserList.do"
data2={
'startCreateDat':'',
'endCreateDate':'',
'searchValue':'',
'page':'1'
}
h2={"Content-Type":"application/x-www-form-urlencoded",
"Cookie":self.cookie}
jk2=requests.request("post",url=url2,data=data2,headers=h2)
print(jk2.text)
if __name__ == '__main__':
dx=Cms()
dx.dl()
dx.yh()
案例3:
import requests
class Cms(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"}
jk1=requests.request("post",url=url1,data=data1,headers=h1)
print(jk1.text)
c=str(jk1.cookies)
print(c) #<RequestsCookieJar[<Cookie JSESSIONID=DAB3F94092C907F3BAD009410A8778E0 for 49.233.201.254/cms/>]>
cookie=c.split(" ")[1] #JSESSIONID=6D60B90E937058D8B91B66A18671A4CB
# print(cookie)
return cookie
def yh(self):
d=self.dl()
url2="http://49.233.201.254:8080/cms/manage/queryUserList.do"
data2={
'startCreateDat':'',
'endCreateDate':'',
'searchValue':'',
'page':'1'
}
h2={"Content-Type":"application/x-www-form-urlencoded",
"Cookie":d}
jk2=requests.request("post",url=url2,data=data2,headers=h2)
print(jk2.text)
if __name__ == '__main__':
dx=Cms()
# dx.dl()
dx.yh()

关联接口
省份接口:
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince
城市接口:
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupport
入参:CitybyProvinceName:{{cs}}
案例1:
import requests s=requests.Session() class Gl(object): def __init__(self): pass def sf(self): url="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince" jk=s.post(url=url) print(jk.text) def cs(self): url1=r"http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity" data1={'byProvinceName':"浙江"} h1={"Content-Type":"application/x-www-form-urlencoded"} jk1=s.post(url=url1,data=data1,) print(jk1.text) if __name__ == '__main__': dx=Gl() dx.sf() dx.cs()
案例2:

import requests
import re
s=requests.Session()
class Gl(object):
def __init__(self):
pass
def sf(self):
url="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince"
jk=s.post(url=url)
print(jk.text)
self.tq=re.findall('<string>(.+?)</string>',jk.text)
# print(tq)
def cs(self):
url1=r"http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity"
data1={'byProvinceName':self.tq[8]}
h1={"Content-Type":"application/x-www-form-urlencoded"}
jk1=s.post(url=url1,data=data1,headers=h1)
print(jk1.text)
if __name__ == '__main__':
dx=Gl()
dx.sf()
dx.cs()
作者:zzhz925