闭包思维自动生成unittest接口测试用例脚本

发表于:2021-7-09 09:57

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:我去热饭    来源:掘金

  对于n条测试用例,还需要写满篇的test_1 ,test_2么?
  显然不需要了。人只需要在表中写好要测试的接口的名字,参数即可。
  如图:
  具体代码:
  class Test(unittest.TestCase):
      '测试类'
      token_1 = token_emba('12012341006', '123456') #类变量
      def begin_req(self,apidata):
          u'获取部门列表'
          # print apidata
          if apidata[1] == ['']:
              data = eval(apidata[0])()
          elif apidata[1] != ['']:
              data = eval(apidata[0])(apidata[1])  # 输入要测试的数据,data=(mode,url,body),
          back = json.loads(req(data, self.token_1)['res_body'])  # 获取实际返回值,需要传入token的话,请req(data,token)
          YQ = 200  # 输入预期的值
          SJ = back['code']  # 设置实际返回,如果需要传入TOKEN等header,请务必填写!
          self.assertEqual(SJ, YQ, error_code(SJ, YQ))
  def demo(apidata):
      def tool(self):
          Test.begin_req(self,apidata)
      setattr(tool, '__doc__', u'测试%s' % str(apidata[0]))
      return tool
  def testall(apidata):
      for i in range(len(apidata)):
       setattr(Test,'test_'+str(i+1),demo(apidata[i]))
  if __name__ == "__main__":
      fname = './case_2.xls'
      Apidata = []  #设置接口函数名
      SZ = xlrd.open_workbook(fname)
      sz = SZ.sheet_by_index(0)
      for i in range(1,sz.nrows):
          par = str(sz.cell_value(i,1)).split(',')
          Apidata.append([sz.cell_value(i,0),par])
      testall(Apidata)
      suit = unittest.makeSuite(Test)
      filename = u'/'.join(os.getcwd().split('/')[:-2]) + u'/Report/业务逻辑接口测试报告-test.html'
      fp = file(filename, 'wb')
      runner = HTMLTestRunner(fp, title=u'测试服新接口测试', description=u'用例执行报告', fname=filename.split('/')[-1])
      runner.run(suit)
  其中有很多自己封装的函数,贴出来就是给大家看一个思路。我们的原则是尽量不经常因为用例 的增删改查 需要去修改代码。
  也就是写用例用表,看报告用html或其他文件。
  如图,是测试报告。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号