顺丰25k测开带你一文搞定基于 YAML 接口自动化测试框架设计_顺丰测开面试2024

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文

  1. 一个YAML文件能够支持多个用例存储需求,不然几千个用例对应几千个YAML文件管理起来也受不了

  2. 用例中能够支持单接口测试用例也能支持业务场景用例(多个接口调用组合)

  3. 用例中需要包含所属模块、用例名、请求信息、断言信息、提取响应(实现接口关联)等信息

基于上述需求我们来设计一版YAML格式用例:

  • casename: 登录成功
    module: 用户模块
    teststeps:
  • name: 正确用户名、密码进行登录
    request:
    method: POST
    url: /login
    headers:
    Content-Type: application/json
    json:
    username: lemon_auto
    password: lemon123456
    appType: 3
    loginType: 0
    extract:
    token: access_token
    validate:
  • eq: [“status_code”, 200]
  • eq: [“nickName”, “lemon_auto”]

casename与module字段简单,我们来看下teststeps,为什么teststeps是数组类型?

因为用例中包含一个/多个接口请求步骤,也就是一个TestCase包含了多个teststep,每一个teststep就是一个接口请求。

request中指定接口请求信息,包括接口请求方法、请求地址、请求头、请求参数;其中不同的请求参数类型我们需要进行区别,上述的是json传参,如果是form表单、查询参数传参我们都可以约定为类似的key-value结构,只需要将json改为formparam、queryparam。

需要注意的是文件上传接口的参数会比较特殊,一般来说我们只需要设置要上传文件路径即可,所以我们可以这样设计:

  • casename: 上传图片
    module: 用户模块
    teststeps:
  • name: 正常上传图片
    request:
    method: POST
    url: /p/file/upload
    headers:
    Content-Type: multipart/form-data
    file: src/test/resources/upload.png
    extract:
    resourcesUrl: resourcesUrl
    filePath: filePath
    validate:
  • eq: [ “status_code”, 200 ]

extract字段为要提取的响应数据字段,传递给后续的接口使用。一般我们要求能够支持JsonPath表达式或者正则表达式来提取,对应的key为要提取的字段名,对应的值为要提取的字段表达式。

validate字段是断言信息,也就是验证响应结果是否符合预期。这里我们需要支持常用的判断方法包括:等于、大于、小于、大于等于、小于等于,通过简写eq代替equals(等于)判断,其他的类似:大于等于(ge)、小于等于(le)、小于(lt)、大于(gt)。

上述的是单接口测试用例,我们看下多接口串联(业务场景)用例编写的样式:

ModifyUserProfile.yaml

  • casename: 修改用户头像
    module: 用户模块
    teststeps:

  • name: 登录成功
    request:
    method: POST
    url: /login
    json:
    username: lemon_auto
    password: lemon123456
    appType: 3
    loginType: 0
    headers:
    Content-Type: application/json
    extract:
    token: access_token
    validate:

  • eq: [“status_code”, 200]

  • eq: [“nickName”, “lemon_auto”]

  • name: 进入到个人中心
    request:
    method: GET
    url: /p/user/userInfo
    headers:
    Authorization: ${token}
    validate:

  • eq: [“status_code”, 200]

  • name: 上传头像
    request:
    method: POST
    url: /p/file/upload
    headers:
    Authorization: ${token}
    Content-Type: multipart/form-data
    file: src/test/resources/upload.png
    extract:
    resourcesUrl: resourcesUrl
    filePath: filePath
    validate:

  • eq: [“status_code”, 200]

在多接口测试中重要的是要能够支持参数传递,这里我们在前一个接口使用extract提取接口的响应字段,在后续要使用的接口中通过${token}方式进行引用,熟悉Jmeter接口测试工具的同学应该非常熟悉这种格式。

脚本读取YAML数据

在读取YAML文件数据之前,我们首先需要了解两个概念:序列化与反序列化

  • 把对象转换为字节序列的过程称为对象的序列化;

  • 把字节序列恢复为对象的过程称为对象的反序列化。

而我们读取YAML的过程就可以称之为反序列化。

主流的编程语言都能实现对YAML的解析,接下来以Java语言为例讲解如何读取YAML文件的内容:

Java中能够实现YAML序列化和反序列化的库有很多,包括SnakeYaml、Jackson、jYaml等,使用起来大同小异。以使用Jackson为例:

步骤一:Maven POM文件中添加库的坐标

com.fasterxml.jackson.corejackson-databind2.10.2
com.fasterxml.jackson.dataformatjackson-dataformat-yaml2.10.2org.projectlomboklombok1.18.12provided

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)**
[外链图片转存中…(img-xuvrmfoY-1713255789494)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值