请选择 进入手机版 | 继续访问电脑版

湖南新梦想

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 14|回复: 0

Python3+requests+unittest接口自动化测试实战(二)

[复制链接]

2775

主题

3174

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
11260
发表于 6 天前 | 显示全部楼层 |阅读模式
       然后,测试脚本的编辑
  一切准备就绪,下面通过一个简单的、完整的代码进行演示公共函数的调用,框架的使用及报告的生成。
  import unittest
  import requests
  from Base.readConfig import ReadConfig
  from Base.readExcel import ReadExcel
  from Base.readExcel import WriteExcel
  #实例化
  readexcel = ReadExcel('DATABASE','data_address',0)
  writeexcel = WriteExcel('DATABASE','data_address',0)

  class testcase(unittest.TestCase):
      #初始化
      def setUp(self):
          #获取url
          self.base_url = ReadConfig().get_config('HTTP', 'base_url')
          self.url = self.base_url + readexcel.get_cell(1,1)
          #获取请求头
          self.headers = readexcel.get_cell(1,4)

      def test_case(self):
          nok = 0
          ner = 0
          # 循环读取excel中的测试数据,进行结果验证,并生成excel形式的测试报告
          for i in range(3,readexcel.get_rows()):
              #发送网络请求,得到响应值
              response = requests.post(self.url, headers=self.headers,   data=readexcel.get_cell(i,4).encode('utf-8'))
              actualresult = response.json()
              #获取excel中的预期结果
              expectresult = eval(readexcel.get_cell(i,6))
              # 获取需验证的数据
              key = eval(readexcel.get_cell(i, 5))
              keylen = len(key)
              j = 0
              for k in range(keylen):
                  aresult = 'actualresult' + key[k]
                  eresult = 'expectresult' + key[k]
                  if eval(aresult) == eval(eresult):
                      #预期结果和实际结果一致
                      j = j + 1
              if j == keylen:
                  #测试数据执行通过
                  nok = nok + 1
                  writeexcel.set_cell(i, 8, 'SUCCESS')
              else:
                  # 测试数据执行失败,并将实际结果写入excel
                  ner = ner + 1
                  writeexcel.set_cell(i, 8, 'FAILURE')
                  writeexcel.set_cell(i, 7, str(actualresult))
                  print('第', i + 1, '行用例执行失败:预期结果是', expectresult, '实际结果是', actualresult)
              # 保存测试报告
              writeexcel.save_excel('testreport', '.xls')
              print('测试数据中总共', nok, '条用例执行通过', ner, '条用例执行失败')

      #释放资源
      def tearDown(self):
          pass

  if __name__ == '__main__':
      #构造测试集合
      suite = unittest.TestSuite()
      suite.addTest(testcase('test_case'))
      #创建html文件
      filename = ReadConfig().get_config('DATABASE', 'report_address') + 'testreport.html'
      fb = open(filename,"wb")
      #执行测试并生成html测试报告
      runner = HTMLTestRunner.HTMLTestRunner(stream = fb,description = '针对接口的描述信息',title = '某某的自动化测试报告')
      runner.run(suite)
      #关闭文件
      fb.close()


        最后,生成的html报告

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|湖南新梦想 ( 湘ICP备18019834号-2 )

GMT+8, 2022-6-29 13:53 , Processed in 0.039215 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表