Python Api接口自动化测试框架(二)

发表于:2017-9-11 14:32

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

 作者:赫本z    来源:51Testing软件测试网采编

  四、业务包调用封装包(common.py)
  #!/usr/bin/python
  # -*- coding: UTF-8 -*-
  # 业务包:通用函数
  import lib.tezMysql as mysql
  import lib.tezLog as log
  import lib.tezRequest as request
  import lib.tezConfig as conf
  import constants as cs
  import os
  def prepare_data(host, user, password, db, sql):
      """
      数据准备,添加测试数据
      :param host: 服务地址
      :param user: 用户
      :param password: 密码
      :param db: 数据库名
      :param sql: 执行的SQL
      :return: 
      """
      mysql.connect(host, user, password, db)
      res = mysql.execute(sql)
      mysql.close()
      print ("Run sql: the row number affected is %s" % res)
      return res
  def get_prepare_sql(filename, key):
      """
      获取预备执行的SQL
      :param title: 配置文件头信息
      :param key: 配置文件值
      :return: Value 
      """
      try:
          conf.get_config(filename)
          value = conf.get_data(title=cs.TITLE, key=key)
          return value
      except Exception, e:
          print ("获取用例参数值失败 %s" % e)
  def reset_report(filename):
      try:
          result = os.path.exists(cs.REPORT_PATH)
          if result == True:
              conf.get_config(filename)
              reportName = eval(conf.get_data(title=cs.REPORT_NAME, key=cs.REPORT))
              report_name = eval(conf.get_data(title=cs.REPORT_NAME, key=cs.R_NAME))
              file = open(cs.YML_REPORT, 'r')
              list_con = file.readlines()
              content = str(list_con).decode("string_escape")
              fileContent = "- [%s, %s]"
              row = "\n"
              con = row + fileContent % (reportName + cs.NOW, report_name)
              if fileContent % (reportName + cs.NOW, report_name) not in content:
                  f = open(cs.YML_REPORT, 'a+')
                  f.write(con)
              else:
                  print ("内容已经存在 %s" % con)
      except Exception, e:
          print ("文件路径不存在 %s", e)
  def run_test(filename):
      conf.get_config(filename)
      list = eval(conf.get_title_list())
      reportName = eval(conf.get_data(cs.REPORT_NAME, key=cs.REPORT))
      logging = log.get_logger(reportName)
      for i in range(2, len(list)):
          title = list[i]
          number = eval(conf.get_data(title, key=cs.NUMBER))
          name = str(conf.get_data(title, key=cs.NAME))
          method = str(conf.get_data(title, key=cs.METHOD))
          url = str(conf.get_data(title, key=cs.URL))
          data = request.change_type(conf.get_data(title, key=cs.DATA))
          headers = eval(conf.get_data(title, key=cs.HEADERS))
          testUrl = cs.TEST_URL + url
          actualCode = request.api(method, testUrl, data, headers)
          expectCode = conf.get_data(title, key=cs.CODE)
          if actualCode != expectCode:
              print "FailInfo"
              print number
              logging.warning("- <font color=#FFB5C5 size=3>FailCase : %s", name)
              logging.warning("    - <font color=#FFB5C5 size=3>Number : %s", number)
              logging.warning("    - <font color=#FFB5C5 size=3>Method : %s", method)
              logging.warning("    - <font color=#FFB5C5 size=3>Url : %s", testUrl)
              logging.warning("    - Data : </br> ``` %s ```", data)
              logging.warning("    - Headers : </br> ``` %s ```", headers)
              logging.warning("    - <font color=#FFB5C5 size=3>期望值 : %s", expectCode)
              logging.warning("    - <font color=#FFB5C5 size=3>实际值 : %s", str(actualCode))
              logging.warning("*****************")
          else:
              print number
              print "TrueInfo"
              logging.warning("- <font color=#3cc8b4 size=3> TrueCase %s", name)
              logging.warning("*****************")
  五、执行包(run.py)
  import util.common as common
  import sys
  # FILENAME = sys.argv[1]
  FILENAME = "proUser.ini"
  """1.新建测试报告目录"""
  common.reset_report(filename=FILENAME)
  """2.执行测试用例"""
  common.run_test(filename=FILENAME)
  PS:有个全局变量包constant.py,里面看到是参数目录文件相关的。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • 15879137390
    2017-9-14 14:53:44

    官方的mkdocs镜像叫啥名

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号