Python如何实现http接口自动化测试

  介绍

这篇文章将为大家详细讲解有关Python如何实现http接口自动化测试,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

接口测试常用的工具有提琴手,邮递员,jmeter等,使用这些工具测试时,需要了解常用的接口类型和区别,比如我用到的post和get请求,表面上看得到用于获取数据帖子用于修改数据,两者传递参数的方式也有不一样,得到是直接在url里通过,# 63;来连接参数,而文章则是把数据放在http的包体内(请求主体),两者的本质就是TCP链接,并无差别,但是由于http的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。具体的可以参考此博文,讲解的比较通俗易懂。这些在工具中可以直接选择,Python需要借助请求包。

确定好接口类型后,需要做的就是准备测试数据和设计测试用例了,测试用例比如说可以判断返回状态响应码,或者对返回数据进行判别等,具体可以参考邮递员中的echo.collections,对于Python可以用unittest来组织测试用例和添加断言进行判断。而对于测试数据的准备,需要做到数据和业务尽量分离,即将测试数据参数化,在工具中可以通过添加变量的形式实现,对于Python设计到的有关包有xlrd, json,如果需要连接数据库还需要mysql。
测试完成后生产报告或者发送邮件,也可以使用HTMLTestRunner和smtplib等。
我也从这三大方面进行总结:


请求库可以很好的帮助我们实现http请求,API参考文档,这里我创建了runmethod。py,里面包含RunMethod类:

 Python如何实现http接口自动化测试“> <br/> </p> <p>这里需要注意就是Python默认参数和可选参数要放在必选参数后面,对于相应数据使用json格式进行返回。参数验证=false表示忽略对SSL证书的验证。</p> <p> </p> <p>使用unittest来组织测试,添加测试用例和断言,测试报告可以下载HTMLTestRunner。py并放在python安装路径自由下即可,代码如下:</p> <pre类= #编码:utf - 8   进口unittest   进口json   进口HTMLTestRunner   从模拟进口模拟   从演示导入RunMain #   从runmethod进口runmethod   从mock_demo进口mock_test   进口操作系统   类TestMethod (unittest.TestCase):   def设置(自我):   # self.run=RunMain ()   self.run=RunMethod ()   def test_01(自我):   url=& # 39; http://coding.imooc.com/api/cate& # 39;   data=https://www.yisu.com/zixun/{   “时间戳”:“1507034803124”,   “uid”:“5249191”,   “uuid”:“5 ae7d1a22c82fb89c78f603420870ad7”,   “秘密”:“078474 b41dd37ddd5efeb04aa591ec12”,   “令牌”:“7 d6f14f21ec96d755de41e6c076758dd”,   “cid”:“0”,   错误代码:1001   }   # self.run.run_main=mock.Mock (return_value=数据)   res=mock_test (self.run.run_main、数据url,“后”,数据)   # res=self.run.run_main (url,“文章”,数据)   打印(res)   self.assertEqual (res(“错误代码”),1001年,“测试失败”)         @unittest.skip (“test_02”)   def test_02(自我):      url=' http://coding.imooc.com/api/cate '   data={   “时间戳”:“1507034803124”,   “uid”:“5249191”,   “uuid”:“5 ae7d1a22c82fb89c78f603420870ad7”,   “秘密”:“078474 b41dd37ddd5efeb04aa591ec12”,   “令牌”:“7 d6f14f21ec96d755de41e6c076758dd”,   “cid”:“0”      }      res=self.run.run_main (url,‘得到’,数据)   self.assertEqual (res(“错误代码”),1006年,“测试失败”)      def test_03(自我):   url=' http://coding.imooc.com/api/cate '   data={   “时间戳”:“1507034803124”,   “uid”:“5249191”,   “uuid”:“5 ae7d1a22c82fb89c78f603420870ad7”,   “秘密”:“078474 b41dd37ddd5efeb04aa591ec12”,   “令牌”:“7 d6f14f21ec96d755de41e6c076758dd”,   “cid”:“0”,   “状态”:11   }      res=mock_test (self.run.run_main、数据url,‘得到’,数据)   打印(res)   self.assertGreater (res(的状态),10日的测试通过的)      if __name__==癬_main__”:      filepath=os.getcwd () +“//report.html”   fp=开放(filepath wb +)   套件=unittest.TestSuite ()   suite.addTest (TestMethod (test_01))   suite.addTest (TestMethod (test_02))   suite.addTest (TestMethod (test_03))   跑步者=HTMLTestRunner。HTMLTestRunner(流=fp, title=罢馐茄菔静馐浴?   runner.run(套房)   # unittest.main ()

Python如何实现http接口自动化测试