requests怎么用,requests有哪些方法

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: