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

发表于:2017-9-11 14:32  作者:赫本z   来源:51Testing软件测试网采编

字体: | 上一篇 | 下一篇 |我要投稿 | 推荐标签: Python 接口测试 自动化测试框架

  公司新来两个妹子一直吐槽这个接口测试用例用excel维护起来十分费脑费事,而且比较low(内心十分赞同但是不能推翻自己),妹子说excel本来就很麻烦的工具,于是偷偷的进行了二次改版。
  变更内容如下:
  1.代码结构
  image.png
  2.新增测试报告网页版和版本管理
  3.新增用例代码化
  一、封装一个获取用例的模块
  image.png
  用例的写法可以按照yml文件的写法,后缀的文件都可为.conf、.config、.ini。[]中的是测试用例场景,下面的参数内容对应接口用例参数。
  简单介绍下python内置模块ConfigParser:
  ConfigParser 是用来读取配置文件的包。配置文件的格式如下:中括号“[ ]”内包含的为section。section 下面为类似于key:value 的配置内容。(key = value也可以具体方法这次不详细展开,之后写一遍关于ConfigParser的用法,懂原理会让工作更轻松。)
  这里讲讲为什么配置写在最外层,如果写到文件夹中,怎么都无法读取配置。python执行run命令的时候需要.ini文件跟run 文件在同个文件夹下。所以应该是路径问题导致,之后尝试修复这个BUG。
  这次变更代码实现如下:
  #!/usr/bin/python
  # -*- coding: UTF-8 -*-
  # 基础包:配置服务
  import ConfigParser
  config = ConfigParser.ConfigParser()
  def get_config(filename):
      """
      获取文件配置
      :param filename: 配置文件名
      :return: None
      """
      global config
      try:
          config.read(filename)
          return True
      except Exception, e:
          print ("读取配置失败 %s" % e)
  def get_data(title, key):
      """
      参数配置
      :param title: 配置文件的头信息
      :param key: 配置文件的key值
      :return: 配置文件的value
      """
      try:
          value = config.get(title, key)
          return value
      except Exception, e:
          print ("获取参数失败 %s" % e)
  def get_title_list():
      """
      获取所有title
      :return: title list
      """
      try:
          title = config.sections()
          return str(title).decode("string_escape")
      except Exception, e:
          print ("获取title信息失败 %s", e)
  二、封装一个日志的模块
  这次日志进行了一次更改:会将测试用例返回结果文件内容写入,文件通过mkdocs生成测试报告。
  公司用的微服务,所以对docker有一定涉猎。官方提供了mkdocs的镜像。拉取官网镜像,将数据卷挂载到搭载测试报告的宿主机上,就可以访问了。你只要维护代码的测试用例,自动更新测试报告。
  看下展示效果:
  image.png
  代码如下:
  #!/usr/bin/python
  # -*- coding: UTF-8 -*-
  # 基础包:日志服务
  import logging
  import constants as cs
  import logging.handlers
  def get_logger(name='report'):
      FORMAT = '%(message)s'
      filename = cs.REPORT_PATH + name + cs.NOW
      logging.basicConfig(level=logging.WARNING, format=FORMAT,
                         filename=filename, filemode='w')
      return logging
  三、调用接口的requests
  代码如下:
  #!/usr/bin/python
  # -*- coding: UTF-8 -*-
  # 基础包:接口测试的封装
  import requests
  import json
  def change_type(value):
      """
      对dict类型进行中文识别
      :param value: 传的数据值
      :return: 转码后的值
      """
      result = eval(json.dumps(value, ensure_ascii=False, encoding="UTF-8"))
      return result
  def api(method, url, data, headers):
      """
      定义一个请求接口的方法和需要的参数
      :param method: 请求类型
      :param url: 请求地址
      :param data: 请求参数
      :param headers: 请求headers
      :return: code码
      """
      global results
      try:
          if method == ("post" or "POST"):
              results = requests.post(url, data, headers=headers)
          if method == ("get" or "GET"):
              results = requests.get(url, data, headers=headers)
          response = results.json()
          code = response.get("code")
          return code
      except Exception, e:
          print ("请求失败 %s" % e)

21/212>

评 论

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

    官方的mkdocs镜像叫啥名

论坛新帖

顶部 底部


建议使用IE 6.0以上浏览器,800×600以上分辨率,法律顾问:上海瀛东律师事务所 张楠律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2017, 沪ICP备05003035号
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪公网安备 31010102002173号

51Testing官方微信

51Testing官方微博

扫一扫 测试知识全知道