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()