川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

Python的requests类的接口测试:初始阶段

作者:川石学院 日期:2022-05-20 14:02:43 点击数:

一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“接口测试的初始阶段”。

Python的requests类的接口测试:初始阶段(图1)

  接口测试,又名API测试,在DevOps推广之中的地位得到了显著的提高,对于接口测试相对于GUI自动化测试、基于单元测试的自动化测试脱颖而出,以前测试金字塔模型(图1-1)逐渐被纺锤模型(图1-2)所取代。

  当然JMeter、Postman、HttpRunner也可以进行接口测试(后面的章节会进行介绍),但是它由于代码不可复用,越来越被类似于基于requests类Python代码取代了。基于requests类Python代码使接口测试变得非常简单,只要组合get或者post参数,通过requests类的post或者get方法调用返回数据就可以实现,下面的代码展示了一个网站的登录功能的最原始接口测试代码。

  案例4-89:最基本的测试登录功能的接口测试。

  #最基本的操作

  import requests

  import unittest

  class login(unittest.TestCase):

  def setUp(self):

  self.correctusername="cindy"

  self.correctpassword="123456"

  self.discorrectusername="jerry"

  self.discorrectpassword="000000"

  self.url="http://localhost:8000/login_action/"

  #正确的用户名,错误的密码

  def test_correctusername_discorrectpassword(self):

  payload={"username":self.correctusername,"password":self.discorrectpassword}

  data = requests.post(self.url,data=payload)

  #验证返回码

  self.assertEqual("200",str(data.status_code))

  #验证返回内容

  self.assertIn("用户名或者密码错误" ,str(data.text))

  #错误的用户名,正确的密码

  def test_discorrectusername_correctpasswor(self):

  payload={"username":self.discorrectusername,"password":self.correctpassword}

  data = requests.post(self.url,data=payload)

  #验证返回码

  self.assertEqual("200",str(data.status_code))

  #验证返回内容

  self.assertIn("用户名或者密码错误" ,str(data.text))

  #错误的用户名,错误的密码

  def test_discorrectusername_discorrectpassword(self):

  payload={"username":self.discorrectusername,"password":self.discorrectpassword}

  data = requests.post(self.url,data=payload)

  #验证返回码

  self.assertEqual("200",str(data.status_code))

  #验证返回内容

  self.assertIn("用户名或者密码错误" ,str(data.text))

  #正确的用户名,正确的密码

  def test_correctusername_correctpassword(self):

  payload={"username":self.correctusername,"password":self.correctpassword}

  data = requests.post(self.url,data=payload)

  #验证返回码

  self.assertEqual("200",str(data.status_code))

  #验证返回内容

  self.assertIn("电子商务系统" ,str(data.text))

  if __name__=='__main__':

  #构造测试集

  suite=unittest.TestSuite()

  suite.addTest(login("test_correctusername_discorrectpassword"))

  suite.addTest(login("test_discorrectusername_correctpassword"))

  suite.addTest(login("test_discorrectusername_discorrectpassword"))

  suite.addTest(login("test_correctusername_correctpassword"))

  #运行测试集合

  runner=unittest.TextTestRunner()

  runner.run(suite)

  在这里仍旧使用python的unittest框架,分别验证了错误用户名,正确密码、正确用户名,错误密码、错误用户名,错误密码、正确用户名,正确密码四种情况。

  1. requests类配置与发送相关的知识简介

  •   l 安装包:

  C:\>pip3 install requests

  l 引入包:

  import requests

  •   l 发送get参数格式:

  data = requests.get(url,params=payload)

  其中payload为字典类型的变量。

  •   l 发送post参数格式:

  data = requests.post(url,data=payload)

  其中payload为字典类型的变量。

  •   l 发送cookie请求格式:

  data = requests.post(url,data=payload,cookies=cookie)

  或者

  requests.get(url,params=payload,cookies=cookie)

  其中cookie也是为字典类型的变量。

  •   l 保持session:

  mysession = requests.Session()

  data = mysession.get(url,params=payload)

  或者

  data = mysession.post(url,data=payload)

  这种情况往往发生在测试先要登录的测试功能场景中。

  2. requests类响应相关的知识简介

  •   l data.status_code:响应状态码。

  •   l data.content:字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩。

  •   l data.headers:以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None。

  •   l data.json():Requests中内置的JSON解码器。

  •   l data.url:获取url。

  •   l data.encoding:编码格式。

  •   l data.cookies:获取cookie。

  •   l data.raw :返回原始响应体。

  •   l data.text:字符串方式的响应体,会自动根据响应头部的字符编码进行解码。

  •   l data.raise_for_status():失败请求(非200响应)抛出异常


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2022-05-20 14:02:43
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2022-05-20 14:02:43
  • 国外的月亮也不一定比国内测试猿的年薪美~2022-05-20 14:02:43
  • 建筑工程专业朱同学成功转行为软件测试人!2022-05-20 14:02:43
  • 财务管理专业转行软件测试月薪甩会计几条街!2022-05-20 14:02:43
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2022-05-20 14:02:43
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2022-05-20 14:02:43
  • 文科生转行软件测试照样拿下高薪15K!2022-05-20 14:02:43
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2022-05-20 14:02:43
  • 毕业1年,迷茫的他最终选择转行软件测试2022-05-20 14:02:43