requests怎么用,requests有哪些方法
02项请求接口测试-请求的安装安装常见问题
提示连接不上,443问题一般是因为浏览器设置了代理,关闭代理。
网络加载慢,设置国内镜像地址1.pip安装
2 .皮查姆安装
国内镜像源清华:https://pypi . tuna . Tsinghua . edu . cn/simple
阿里云:http://mirrors . aliyun . com/pypi/simple/
中国科技大学https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/
豆瓣:http://pypi .豆瓣. com/simple/
临时使用在使用点的时候加参数我是https://pypi.tuna.tsinghua.edu.cn/simple
例如:pip install-I https://pypi.tuna.tsinghua.edu.cn/simple py spider这样就会从清华镜像去安装淘女郎库。
03次请求接口测试-请求原理与代码解析要求工作原理
代码解析通过追踪代码,可以发现要求实际上是调用了请求方法,源码如下:
方法,网址是必填参数,其他是可选参数。
参数方法,有获取,选项,标题,发布,上传,修补,删除。
可选参数可以发送数据、json、头、饼干、苍蝇、auth、超时、代理、验证、流、证书
定义请求(方法,网址,**kwargs):
""构造并发送:class:`Request Request .
:参数方法:新:类:`请求对象的方法:` GET `、` OPTIONS `、` HEAD `、` POST `、` PUT `、` PATCH `、或删除.
:参数url:新:类:`请求对象的URL .
:param参数:(可选)字典,要发送的元组或字节的列表
在:类别的查询字符串中请求.
:参数数据:(可选)字典、元组列表、字节或类似文件
要在类的主体中发送的对象请求.
:param json:(可选)要在:类:`请求的主体中发送的数据可序列化计算机编程语言对象。
:param头:(可选)要与:类:`请求一起发送的超文本传送协议头的字典。
:参数cookies:(可选)要与:类:`请求一起发送的词典或库克耶尔对象。
:参数文件:(可选)用于多部分编码上载的``名称:类似文件的对象`(或``{name: file-tuple} `)字典。
"文件元组"可以是2元组``( 文件名,文件对象)` `, 3元组`( 文件名,文件对象,内容类型)`
或者四元组``( 文件名,文件对象,内容类型,自定义标题)`,其中``内容类型`是字符串
定义给定文件的内容类型和"自定义标题",一个类似词典的对象,包含额外的头
为文件添加。
:参数验证:(可选)用于启用基本/摘要/自定义超文本传送协议身份验证的身份验证元组。
:参数超时:(可选)等待服务器发送数据的秒数
在放弃之前,作为一个浮动,或者一个:ref:`(连接超时,读
超时)超时`元组。
:类型超时:浮点或元组
:param allow_redirects:(可选)布尔型.启用/禁用获取/选项/发布/上传/修补/删除/头重定向。默认为"真"。
:类型允许重定向:bool
:param代理:(可选)代理统一资源定位器的字典映射协议。
:参数验证:(可选)布尔值,在这种情况下,它控制是否进行验证
服务器的坦克激光瞄准镜(Tank Laser-Sight的缩写)证书或字符串,在这种情况下,它必须是路径
要使用的加利福尼亚包。默认为"真"。
:参数流:(可选)如果“假的”,将立即下载响应内容。
:参数证书:(可选)如果是字符串,则为安全套接层客户端证书文件的路径(。pem).如果元组,(证书,密钥)对。
:return:class:`Response响应`对象
:rtype:请求。反应
用法:
导入请求
req=requests.request(GET , https://httpbin.org/get )
请求
回应【200】
#通过使用"与"语句,我们确定会话已关闭,因此我们
#避免让套接字处于打开状态,这在某些情况下会触发资源警告
#例,在其他情况下看起来像内存泄漏。
通过会话。会话()作为会话:
返回session.request(method=method,url=url,**kwargs)04请求接口测试-去吧请求请求参数保存在全球资源定位器(统一资源定位器)中,后面添加参数名称和参数值,如果有多个参数,使用连接请求参数保存在参数中,参数以字典形式保存数据接口说明:
淘宝网
应用程序接口地址:http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?电话=13909161860
参数:
电话:手机号码
返回:JSON
导入请求
定义测试_获取():
# 参数保存在全球资源定位器(统一资源定位器)中,后面添加参数名称和参数值,如果有多个参数,使用连接
网址=http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?电话=13909161860
r=requests.get(url=url)
打印(正文)
打印(r。状态_代码)
打印(r.cookies)
打印(网址)
# 参数保存在参数中,参数以字典形式保存数据
URL= http://TCC。淘宝。com/cc/JSON/mobile _ tel _ segment。 htm
params={tel:13909161860}
r=请求。get(URL=URL,params=params)
打印(正文)
打印(r。状态_代码)
打印(r.cookies)
打印(网址)获取响应结果导入请求
极好的测试请求():
r=请求。得到( https://www。百度一下。com’)
打印( \n )
打印(状态码是:,r.status_code)
打印( url是:,r.url)
打印(头信息是:,r.headers)
打印(‘饼干是:,r.cookies)
打印(文本是:,r.text)
打印(请求是:,r.request)05请求接口测试-邮政请求邮政发送形式格式请求参数,使用数据
邮政发送数据格式请求参数,使用数据
06次请求接口测试饼干值什么是饼干?相当于临时身份证。
谷歌浏览器抓包查看请求参数的格式,看内容类型字段
如:内容类型:文本/html;charset=utf8,表示请求参数是文本格式,编码是utf-8
如果是形式式,可以查看格式数据具体发送的参数
在脚本中发送
查看饼干
解码编码:把码位转换成字节序列(通俗来说:把字符串转换成用于存储或传输的字节序列,python中是encode())
解码:把字节序列转换成码位(通俗来说:把字节序列转换成人类可读的文本字符串,python中是. decode())
07请求接口测试-标题值头球参数不是每个接口都需要添加的,开发可以自行定义。
不需要添加页眉导入请求
定义测试_ 51作业():
# 前程无忧搜索岗位不需要头球信息
URL= https://搜索。51工作。com/list/030200,00000000,00,9,99% E8 % BD % AF % E4 % BB % B6 % E6 % B5 % 8B % E8 % AF % 95% E5 % B7 % A5 % E7 % A8 % 8B % E5 % B8 % 88,2,1.html?lang=c stype=post channel=0000 work year=99 cotype=99 degree from=99 job term=99 company size=99 provider salary=99 lon lat=0,0 radius=-1 ord _ field=0 confirm date=9 from type=dibiaoid=0 address=line=special area=00 from=welfare=
r_51job=requests.get(url=url)
# print(r_51job.text)
print(r_51job.encoding) # html默认的编码方式是ISO-8859-1
r_51job.encoding=gb2312 #修改编码方式
打印(r_51job.text)乱码问题
需要添加页眉导入请求
定义测试_12306():
# 12306搜索车票需要添加头球信息,只需要饼干即可。实际工作中,标题需要哪些值,咨询开发人员了解。
URL= https://kyfw。12306 . cn/OTN/左票/查询?左票dto。train _ date=2020-06-06左票dto。from _ station=SHH左票dto。to _ station=GZQ目的代码=成人
headers={ Cookie : JSESSIONID=C5 DCA 622147 cef 2c 4d 9 C3 D3 e 53 e 9 cf 26;bigipserveroton=1406730506.64545。0000;RAIL _ EXPIRATION=1591740743186 RAIL _ device id=FqtrEO _ 1 lqcmdlmy _ 0 uxbnylf 5 esh-V-KtA _ I-kpu 0j 721 _ hyt XO 4 iobbdtzbar 75 fltghlhaqte 8 mwean mm 7 occf 3 huvifw-gaaper 7 czwlrdfshwwey 8 w _ yq 5 ggomoyfkgvj 5 o 4 nnuwvyhuic _ cxpzswfjBIGipServerpassport=954728714.50215。0000;路线=6 f 50 b 51 FAA 11 b 987 e 576 CDB 301 e 545 c 4;_ JC _ save _ to station=% u5e 7 f % u5d de,GZQ _ JC _ save _ from date=2020-06-06;_ JC _ save _ toDate=2020-06-06;_ JC _ save _ wfdc _ flag=DC _ JC _ save _ from station=% u4E0A % u6d 77,嘘 }
r_12306=requests.get(url=url,headers=headers)
打印(r_12306.text)使用铬查看头球
08项请求接口测试-https证书安全超文本传输协议协议需要证书
方法在发送请求时忽略证书,证书参数verify直接访问,并报告一个错误。(我自己试过,没有添加验证尝试,没有错误)
默认情况下,verify参数设置为True,False表示证书被忽略。
导入请求
def测试验证():
url=https://www.ctrip.com/
r=requests.get(url=url,verify=False)
打印(r.text)在验证中添加证书路径09请求接口测试-上传文件参数携程上传头像导入请求
def测试文件():
URL= 3359sinfo.ctrip.com/myinfo/ajax/uploadphoto.ashx #携程上传头像
cookie={ cookie : cookie的值 }
files={ upload file _ 852 :( markdown . jpg ,open(D:\\Markdown.jpg , rb ), image/jpeg)}
r=requests.post(url=url,files=files,verify=False,cookies=cookies)
打印(r.text)文件字段的描述:
UploadFile_852文件参数名,通过包捕获工具查看,实际工作中直接咨询开发。
Markdown.jpg文件名
Open(D:\Markdown.jpg , rb )打开本地文件,注意使用\ escape。
图像/jpeg文件格式
上传csv文件一般需要哪些参数才能上传文件?
1 .网址
2.请求参数
3.请求方法
4 .文件参数
5 .饼干
测试接口的两个检查点。1.验证返回的结果是否与开发的定义(接口文档)一致。如果上传成功,则返回1,如果上传失败,则返回0。
2.检查接口的逻辑是否正确。比如上传文件后,文件会保存在服务器的一个目录下,检查目录下是否有上传的文件。
1请求接口测试-超时超时测试介绍
exception requests . exceptions . connect time out:httpconnectionpool(host= TCC . Taobao . com ,port=80):URL:/cc/JSON/mobile _ tel _ segment.htm超过最大重试次数?tel=13909161860(由ConnectTimeoutError(URL lib 3 . Connection . httpconnection对象位于0x000001576DCE1148,到tcc.taobao.com的连接超时。(连接超时=0.01)))
导入请求
def测试超时():
URL= http://TCC . Taobao . com/cc/JSON/mobile _ tel _ segment . htm?电话=13909161860
r=requests.get(url=url,timeout=1)
打印(r.text)转为导入请求。
def测试文件():
#携程上传用户头像
对于范围(0,10)内的I:
尝试:
URL= https://sinfo . Ctrip . com/MyInfo/Ajax/upload photo . ashx
cookie={ cookie : cookie的值)}
r=requests.post(url=url,files=files,verify=False,cookies=cookies,timeout=0.25)
打印(r.text)
除了:
打印(“运行错误”)
1请求接口测试-授权认证
1Requests接口测试——文件下载接口导出Zen用例模板。
思考
使用13个请求接口来测试stream参数的会话操作。为什么使用会话参数?很多接口需要一些公共参数,比如cookies,这样可以节省时间,简化代码。
def test_seesion():
s=会话()
s.headers={h:test_headers}
r=s . post( 3359 http bin . testing-studio . com/post ,data={a: 1}) #不需要单独添加头。
print(r.json())
1请求接口测试-令牌的操作
将令牌放在数据参数中
1请求接口test -sign签名查看微信支付开发文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php? https://pay.weixin.qq.com/wiki/doc/api/index.html chapter=4 _ 3
微信支付签名算法(签名验证工具)
签名生成的一般步骤如下:
第一步,将所有发送或接收的数据设置为集合M,将集合M中参数值非空的参数按照参数名的ASCII码(字典顺序)从小到大排序,用URL键-值对的格式(即key1=value1 key2=value2…)拼接成一个string stringA。
请特别注意以下重要规则:
参数名ASCII码从小到大排序(字典顺序);
如果参数值为空,则不参与签名;
参数名区分大小写;
验证调用返回或微信主动通知签名时,发送的sign参数不参与签名,生成的签名用sign值校验。
微信界面可能会添加字段,验证签名时必须支持添加的扩展字段。
其次,在stringA上拼接密钥得到stringsigntmp字符串,对stringsigntmp进行MD5运算,然后将得到的字符串的所有字符转换成大写,得到signValue signvalue。
密钥设置路径:微信商家平台(pay.weixin.qq.com)-账户设置- API安全-密钥设置
示例:
假设要传输的参数如下:
appid: wxd930ea5d5a258f4f
mch_id: 10000100
设备信息:1000
正文:测试
nonce _ str:ibuaivkdprxkhja第一步:按照key=value的格式和参数名的ASCII字典顺序对参数进行排序,如下所示:
stringA= appid=wxd 930 ea 5d 5a 258 f 4f body=test device _ info=1000 mch _ id=10000100 nonce _ str=ibuaivcdprxkhja ;步骤2:拼接API密钥:
stringsigntemp=stringa key=192006250 B4 c 09247 EC 02 edce 69 F6 a 2d //注:key key为商户平台设置
Sign=MD5 (Stringsigntemp)。toupper Case()= 9a0a 8659 f 05d 6984697 e 2 ca 0a 9 cf 3 b 7 //注意:MD5签名方法
Sign=hash _ hmac (sha256 ,stringsigntemp,key)。toupper case()= 6a 9a e 1657590 FD 6257d 693 a 078 e 1c 34 b 6 B4 a4 DC 30 b 23 E0 ee 2496 e 54170 DAC 6 //注:HMAC-SHA256签名方法获取最终发送的数据:
可扩展标记语言
appid wxd930ea5d5a258f4f /appid
mch_id 10000100 /mch_id
设备信息1000/设备信息
身体测试/身体
nonce _ str ibuaiVcKdpRxkhJA/nonce _ str
标牌9a0a 8659 f 005d 6984697 e 2 ca 0 a 9 cf 3 b 7/标牌
/xml
简单来说,sign签名是按照上面的规则生成的,然后在sign参数中发送。代理代理代理={http: http://127.0.0.1: 8888 , https: 3358127.0.0.1: 8888}
def测试代理():
r=requests . get( https://http bin . testing-studio . com/get ,
# get request接受查询参数,并为URL的查询字符串传递一些数据。
params={
a: 1,
b: 2,
c: asd
},
代理=代理,
Verify=False #关闭验证,否则代理无法捕获数据包。
)
Print(r.json())hook机制hook机制可以修改或替换响应返回的内容。
导入请求
def test_get_hook():
def hook(r,*args,**kwargs):
r.demo=演示内容
r=requests . get( https://http bin . testing-studio . com/get ,
params={
a: 1,
b: 2,
c: asd
},
hooks={response: [hook]}
)
print(r.json())
Print(r.demo)16请求界面自动化——原则最小化后期维护成本1。测试数据的维护
2.测试脚本的维护
尽量减少测试用例之间的依赖,覆盖全面,易懂易读,规范命名。
添加评论
最重要的一点是,自动化测试要基于公司的需求,从公司的需求出发。1请求接口自动化测试-pom模块部门
1请求界面自动化-通过配置文件实现自定义功能的参数化。
在实际工作中,可能需要在不同的测试环境中进行测试。这时可以在配置环境中定义不同的环境,通过改变配置达到在不同环境下测试的目的。
配置文件定义server_ip():
#配置文件,并通过修改配置在不同的环境中进行测试。
dev_ip=https://www.baidu.com/
sit_ip=https://cn.bing.com/
返回sit_ip
def sql_conf():
#定义数据库的配置
ip=
用户名=
密码=
端口=3306
charset=utf-8
返回ip、用户名、密码、端口、字符集导入请求
从config.conf导入* #从配置导入
def test_conf():
URL=server _ IP()/log in # server _ IP()的意思是引入这个函数而不是这个方法。
打印(url)
r=requests.get(url=url)
打印(r.text)
导入请求
从config.conf导入* #从配置导入
def test_conf():
url=server_ip() /login #
打印(url)
r=requests.get(url=url)
打印(r.text)
1请求界面自动化-excel参数化
2请求界面自动化-数据库参数化
2请求界面自动化-列表和字典参数化
2请求界面自动化-动态关联文本/html格式
2请求接口自动化-动态关联json格式
24请求接口自动化-断言断言
2项目测试框架-安装
26个pytest框架-运行测试用例
27 pytest框架-动态关联
28 pytest框架-生成测试报告
29 Jenkins要求pytest allure持续集成
转载请联系作者获得授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。