Python接口测试实战5 - 面向服务封装

上一篇我们封装了def list_issues()接口,在这一节正式开讲前,我们以同样的方法封装另外个接口:

# https://www.redmine.org/projects/redmine/wiki/Rest_Issues#Listing-issues
def list_issues(api_key, **kwargs):
  """按条件查询issue"""
  return requests.get("http://redmine.xuh.me/issues.json", params=kwargs, headers={"X-Redmine-API-Key": api_key}).text


# https://www.redmine.org/projects/redmine/wiki/Rest_Issues#Showing-an-issue
def get_issue(api_key, issue_id, **kwargs):
  """根据issue_id获取issue详情"""
  return requests.get("http://redmine.xuh.me/issues/{}.json".format(issue_id), params=kwargs, headers={"X-Redmine-API-Key": api_key}).text

Read More

Python接口测试实战4 - 封装redmine接口

为了更好的演示接口测试,笔者部署了一个Redmine服务,本系列文章均以该系统作为被测试服务,当然你也可以自己搭建一个redmine系统,可以利用docker快速部署:https://hub.docker.com/_/redmine

1. 接口文档

接口文档是进行接口测试的必要输入,一份好的接口文档笔者认为需要包含以下要素:

  • 接口的鉴权方法
  • 接口的调用时序
  • 接口的必传、可选参数,以及各参数的语义
  • 接口响应报文,以及相关字段语义
  • 接口请求、响应报文demo

Read More

DataStore使用介绍

在测试框架的data目录下有test.jsontest2.json两份文件,用于存放test、test2环境的静态测试数据,比如:

{
    "id": "581e3432-9f03-0ae3-ddc5-d197601c6850",
    "sn": "00000261001200200019186",
    "name": "自动化测试门店",
    "industry": "e586aa25-312d-11e6-aebb-ecf4bbdee2f0",
    "address": ["江苏省", "苏州市", "姑苏区", "干将路99号"],
    "merchant": "default_merchant",
    "contact_name": "Robot",
    "contact_cellphone": "10088880001",
    "cashiers": ["default_cashier"],
    "admins": ["default_admin"],
    "@object": "store",
    "@extended": {
        "label": "default_store",
        "group": "store"
    }
},
{
    "id": "5c82b3f9-e5d2-4e21-ab4b-800d6c7b7265",
    "sn": "1580000000517499",
    "name": "无锡办事处",
    "industry": "e586aa25-312d-11e6-aebb-ecf4bbdee2f0",
    "address": ["江苏省", "无锡市", "崇安区", "湖滨大道99号"],
    "contact_name": "Bill Smith",
    "contact_cellphone": "10088880002",
    "merchant": "default_merchant",
    "admins": ["alternative_admin"],
    "cashiers": ["alternative_cashier"],
    "@object": "store",
    "@extended": {
        "label": "alternative_store",
        "group": "store"
    }
}

Read More

在阿里云内搭建高可用的Kubernetes集群

本文完整地记录下了在阿里云内网构建一个高可用Kubernetes集群的过程。

硬件资源

类型 名称 备注
ECS master-001 ip: 192.168.100.1
ECS master-002 ip: 192.168.100.2
ECS master-003 ip: 192.168.100.3
ECS worker-001 ip: 192.168.100.4
SLB internal-slb ip: 192.168.200.1 内网SLB,内网流量入口
SLB public-slb ip: 100.100.100.100 公网SLB,外网流量入口
ECS haproxy-001 ip: 192.168.110.1 HAProxy集群,不部署kubernetes节点(下文详细说明)
ECS haproxy-002 ip: 192.168.110.2

Read More

分布式系统基础知识

CAP定理

布鲁尔定理,它指出对于一个分布式计算系统来说,不可能同时满足一下三点:

  • 一致性(Consistency): 所有节点访问同一份最新的数据副本
  • 可用性(Availability):每次请求都能获取到非错的响应-但是不保证获取的数据为最新数据
  • 分区容错性(Partition tolerance):系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择

Read More