Python自动化训练营3期】接口测试实战(二)

标题

企业微信接口测试实战2

课程源码

https://github.com/ceshiren/HogwartsFIS03

课程价值

  • 掌握接口测试框架
  • 独立编写接口自动化测试项目

大纲

  • 单接口场景讲解
  • 接口业务场景描述
  • 接口测试框架优化
  • 断言优化

时长

180分钟

PPT

https://pdf.ceshiren.com/xly3/企业微信接口实战2

课程内容

单接口场景

  1. 传入一组合法的参数信息,以及一组不合法的参数信息
  2. 验证合法的是否成功, 不合法的是否失败

业务校验场景

创建部门-> 更新部门->删除部门->获取部门列表

ApiObject设计模式

  • 封装(一些公共函数、操作等)
  • 分层(逻辑业务和接口分开处理)
  • 把实现和断言进行拆分

selenium分层

  • basepage(和业务无关的,底层通用技术的封装)
  • page(页面一些操作:元素定位、click、send_keys等单步封装)
  • testcases(调用page的步骤,并进行断言)

requests(接口)分层,以企业微信为例

  • conf: yaml文件,存放配置或者数据和业务相关的信息
  • baseapi:和业务无关的,底层通用技术的封装,比如requests
  • wework: 和业务线强相关,且此步骤通用性更强,比如token的封装
  • department: 具体的业务接口的描述,接口的入参,接口的请求方式等等
  • test_department:测试用例,包括具体接口的调用,以及具体的断言信息

断言

  • 目前断言的问题: 数据量大的时候,且数据排序没有固定规律,很难获取到对应的值

jsonpath

特点:

  1. 类似于xpath定位方式,只是定位对象是一个json结构体
  2. 相比于普通的断言方式会更加的灵活
    应用场景:
    1.层级嵌套比较深的断言
  3. 嵌套比较复杂且结构多变的断言
  • jsonpath的github

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

jsonpath常用示例

  • 被查找的数据
{"errcode": 0, "errmsg": "ok", "department": [{"id": 1, "name": "WestWayyt", "parentid": 0, "order": 100000000}, {"id": 5, "name": "广州研发中心2", "parentid": 1, "order": 1, "name_en": "RDGZ23"}]}

  1. 找到所有key值为name:$..name
  2. 找到key为department对应的value的第一个值:$..department[0]
  3. 先过滤key为department的所有信息, 然后再过滤其中包含id字段值的信息, $..department[?(@.id)]
  4. 先过滤key为department的所有信息, 然后再过滤其中id==5的信息, $..department[?(@.id==5)]
  5. 先过滤key为department的所有信息, 然后再过滤其中id==5的信息, 并提取其中的name字段 $..department[?(@.id==5)].name

课后调查表

课后作业

https://github.com/chenweizhong-beep/pytest/tree/master/request_testing/request_po_1

https://github.com/13795318537/test-python/tree/master/requests_learn/requests2