企业微信接口测试实战2

霍格沃兹测试开发学社

目录

  • 接口测试框架封装优化
  • 接口测试断言
  • 日志与报告
  • 能力扩展

单接口测试实战

  • 创建部门

业务场景测试实战

  • 创建部门成功 -> 更新部门成功 -> 删除部门

接口测试框架封装

代码优化

  • ApiObject 设计模式
    • 封装
    • 分层
    • 把实现和测试用例以及断言进行拆分

ApiObject

日志的封装

  • 将print改造成标准输出日志

架构优化设计

数据驱动

  • 使用数据驱动实现数据的传入

接口测试断言

jsonpath

jsonpath 常用语法

报告的封装

  • 类上加上装饰器 @allure.feature(“”)
  • 测试方法上加上装饰器 @allure.story(“”)
  • 步骤前加上 with allure.step(“”):

能力扩展

jsonshema 使用


from genson import SchemaBuilder

builder = SchemaBuilder()
builder.add_object({"a":1,"b":"aaaa","c":"","d":None})
builder.add_object({"a":"1","b":"bbb","c":1})
print(builder.to_schema())
print(builder.to_json(indent=2))

jsonschema 断言


from jsonschema import validate

def schema_validate(obj, schema):
    try:
        validate(instance=obj, schema=schema)
        return True
    except Exception as e:
        # raise e
        print(e)
        return False


def test_validate():
    _schema = json.load(open("demo_schema.json", encoding="utf-8"))
    assert schema_validate({"a": "1", "b": 12, "c": 1}, _schema)

pymysql 实现数据断言

def query_db():
    conn = pymysql.Connect(host="47.92.149.0", port=3366, database="test_db",
                           user="root", password="123456",
                           charset="utf8")
    cursor = conn.cursor()
    sql = "some sql'"
    cursor.execute(sql)
    print("行数:", cursor.rowcount)
    # 获取行数
    datas = cursor.fetchall()
    print("查询到的数据为:", datas)  # 获取多条数据
    cursor.close()
    conn.close()
    return datas