【接口自动化测试实战2】企业微信接口自动化测试实战2

课程演练源码:

https://github.com/ceshiren/HogwartsFIS01

上节课用例存在问题

  1. 接口的细节和断言耦合在一起
  2. requests,每一个用例文件都需要引入requests。如果有一天,需要换工具,那么所有的用例文件都要修改,并适配

分层

baseapi的实现

    def send_api(self, req):
        """
        1. 先把请求信息转为为一个json结构体
        2. 在base_api里面对requests.request进行封装
        3. 传入为json结构体的请求信息,给requests.request,
        使用关键字传参的方式传入的时候要注意解包
        :param req: 一个json结构体的请求信息
        :return:
        """
        # 两个** 代表对字典进行解包, 使用 k=v 的形式进行传参
        return requests.request(**req)

辅助断言工具

jsonpath

特点:

  1. 类似于xpath定位方式,只是定位对象是一个json结构体
  2. 相比于普通的断言方式会更加的灵活

应用场景:
1.层级嵌套比较深的断言

https://github.com/json-path/JsonPath

https://json.cn/

hamcrest

应用场景: 更加强大的assert

  • 安装以及示例:

https://pypi.org/project/PyHamcrest/

json schema

  • 安装以及示例:https://pypi.org/project/jsonschema/

  • 特点:不拘泥于某个字段的值,而是看整体返回中,每个字段类型(或其他规则)是否正确

  • 应用场景:返回值多变,但是结构体或者结构体内的多个字段是有固定格式的断言

  • 在线生成模板链接:
    注意:模板里面如果有单引号,需要全部改成双引号

https://jsonschema.net/

工具梳理

  • mitmproxy
  1. mock工具,比较强大在于,可以集成语言(python)
  2. 可以做一个mock服务
  • tcpdump
  1. 抓包工具
  • wireshark
  1. 分析网络请求,黑客级别工具
  • charles
  1. 抓包,mock。
  • requests
  1. 接口自动化非常好用的一个框架
关闭