多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

如何使用requests通过代码实现接口自动化测试

更新时间:2022-03-07 11:17:18 作者:多测师 浏览:219

  接口自动化测试是我们在测试工作中经常见到的,我们工作中常用到的接口工具有jmeter,postman,soupUI等工具,那么在通过代码做接口自动化测试呢?或者通过代码的方式做接口自动化呢?

如何使用requests通过代码实现接口自动化测试

  requests

  requests属于python的第三方库,通常用来发送http和https的请求,既然能向http和https发送请求,那么就能来做接口测试。

  安装

  pipinstallrequests

  requests使用方法

  了解requests是如何安装的了,也知道了requests的安装方法了,那么接下来就开始进行实际操作了。

  get请求

  都知道https请求方式有很多种,如何通过requests来发送get请求呢?这里安静通过模仿百度搜索内容进行发送请求。

  其中get方法中存在3个参数:url和params,其中url表示我们请求的地址,params表示请求参数(get方式的请求存在url地址中),headers表示请求头信息内容。

  importrequests

  url=http://www.baidu.com/s

  headers={

  "User-Agent":"Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/75.0.3770.142Safari/537.36"

  }

  params={

  "wd":"测试-安静"

  }

  r=requests.get(url=url,params=params,headers=headers)

  print(r)

  print(r.url)

  if测试-安静inr.content.decode(utf-8):

  print(请求成功!)

  通过执行结果是成功的。

  其中requests的返回内容还有很多种,上面介绍的url,和content只是其中两种。

  r.status_code#响应状态码

  r.content#字节方式的响应体,会自动为你解码gzip和deflate压缩

  r.headers#请求头信息

  r.json()#Requests中SON

  r.url#获取url

  r.encoding#编码格式

  r.cookies#获取cookie

  r.text#字符串方式的响应体

  post请求

  post请求和get请求类似。post的参数主要有url、data(json)、headers。

  url:请求接口地址

  data:post请求参数类型

  json:post请求参数类型

  headers:请求头信息

  这里安静通过请求查询天气的接口来模拟post请求。

  data请求

  importrequests

  #登录请求地址

  url=http://apis.juhe.cn/simpleWeather/query

  #请求头

  headers={

  "User-Agent":"Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/75.0.3770.142Safari/537.36",

  }

  #body数据

  data={

  city:"上海",#账号

  "key":"331eab8f3481f37868378fcdc76cb7cd",#密码

  }

  #发送请求

  r=requests.post(url,headers=headers,data=data)

  print(r.text)

  通过执行发现,已经请求成功,并返回了响应结果。

  json请求

  importrequests

  url="http://httpbin.org/post"

  #添加json数据

  json={

  "username":"AnJing",

  "password":"123456"

  }

  #通过json方式添加数据

  r=requests.post(url,json=json)

  print(r.text)

  通过执行结果可以看出我们请求的接口类型。

  请求HTTPS

  现在的网站都是HTTPS的了,所谓的HTTPS就是加密过的网站,在原有的HTTP的基础上加上了SSL。HTTPS的请求基本上都是属于SSL加密的,那么对于这种HTTPS的请求,如果我们通过requests的请求进行访问,会报一个requests.exceptions.SSLError的错误。

  对于这种问题,我们可以通过加入参数“verify=False”,requests请求时,verify默认为True,当设置False时,requests请求会进行忽略SSL,从而进行访问HTTPS请求。

  通过加入参数后,在去执行的时候就不会报SSLerror的错误了。

  session

  关于session相信大家都不陌生,他和cookies一样使用来表示用户的登录的一种信息,cookies通常保存在客户端的,session保存在服务端上。其中session可以相当于一个虚拟的浏览器,用来保持登录的状态。requests中有单独方法requests.session()的方法用来保存登录状态。当然requests中有关于对cookies的登录,我们可以通过cookies加入到请求中,然后用来模拟登录场景。然后再去请求其他页面,可以看看到底我们的会话有没有保存成功。这里通过模拟博客园的场景进行来操作cookies登录。

  首先通过Fiddler进行抓取登录前和登录后的cookies值来判断博客园的登录到底是通过什么进行来登录的。

  登录前的cookies

  登录后的cookies

  通过使用fiddler抓取,我们已经找到了登录的cookies内容,然后通过requests中的cookies进行来添加。具体代码:

  #coding:utf-8

  importrequests

  importurllib3

  urllib3.disable_warnings()

  s=requests.session()

  s.verify=False

  url=https://passport.cnblogs.com/user/signin

  headers={

  "User-Agent":"Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/69.0.3497.81Safari/537.36"

  }

  r=s.get(url,headers=headers)

  cooks={

  ".Cnblogs.AspNetCore.Cookies":"这里写入抓取到的cookies值",

  ".CNBlogsCookie":"抓取到的cookies值"

  }

  c=requests.cookies.RequestsCookieJar()

  #登陆有效的cookies

  c.set(".CNBlogsCookie",cooks[".CNBlogsCookie"])

  c.set(".Cnblogs.AspNetCore.Cookies",cooks[".Cnblogs.AspNetCore.Cookies"])

  #将cookies值全部添加到session中

  s.cookies.update(c)

  #访问后台地址,确定是否登录成功

  url1="https://i.cnblogs.com/posts/edit"

  r1=s.get(url1)

  result=r1.content.decode(utf-8)

  if"博客后台-博客园"inresult:

  print("登录成功!")

  通过执行发现,我们已经完成了登录后,并通过session的形式进行访问本网站的其他地址一样是保持着登录的状态。

  重定向

  接口测试中也经常遇到重定向的问题,什么是重定向?就是通过各种方法将各种网络请求重新定个方向转到其它位置。在requests中也有这对重定向的操作allow_redirects其中参数默认是True就是允许重定向,当我们请求的时候,将这个参数设置成False,就能不让其进行重定向。

  #coding:utf-8

  importrequests

  url=http://github.com

  #重定向为False

  r=requests.get(url,allow_redirects=False)

  print(拒绝重定向请求的状态码:%s%(r.status_code))

  print(拒绝重定向请求地址:%s%(r.url))

  #重定向为True(默认为True)

  r2=requests.get(url)

  print(允许重定向请求的状态码:%s%(r2.status_code))

  print(允许重定向请求地址:%s%(r2.url))

  通过执行发现,我们的参数已经设置成功了。在拒绝重定向的时候请求的状态为301,允许重定向的时候为200。

  总结

  安静简单地介绍了requests中的一些常用方法,这些方法可以帮助我们通过python+requests进行编写关于接口测试的方便的代码。等熟练使用requests后可以进行尝试编写自动化测试代码进行辅助日常测试工作。  

  以上内容为大家介绍了如何使用requests通过代码实现接口自动化测试,本文由多测师亲自撰写,希望对大家有所帮助。了解更多接口自动化测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部