首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

让excel测试用例文件实现参数化的思路

1. excel 用例文件现状

在 sanmu 框架中,测试用例完全由 Excel 文件实现,excel 内容大概这样:

虽然实现了完全的”0 代码 “封装,降低了落地的难度,提高了测试效率,

但是使用代码编写测试用例相比,依旧有一些不足之处,比如不支持参数化测试...

不支持参数化测试主要是因为:

excel 本身是数据文件,生成用例时已经使用过了参数化,不能嵌套参数化

pytest 的基本原则是执行用例前收集好所有测试用例,不能再执行过程中生成新的用例(这种用例不被 pytest 加载和执行)

此外,受限于表格的二维特性,

表格中标记多个用例,是通过 作为新用例的标记,

好在这样的处理有一个,无伤大雅

如果再增加新的标记,比如参数化、fixtures、mark、失败重试、。。。表格的结构会越来越混乱了,所以为了能够支持参数化,首先需要在格式进行修改

2. 文件格式优化思路

针对excel文件不能参数化的原因,我暂时想到一个的解决的思路

首先,excel 内容新增一列,让标记和步骤的分开,比如这样

这样就可以在excel 写下 parametrize,其用法于 pytest 的 parametrize 类似,

其后的第一个单元格,写了参数列表 ,将作为变量供用例使用

其后的第二个单元格,写了文件路径 ,用来加载数据,实现数据驱动测试

此外的所有的测试步骤整齐、独立,不与标记内容混淆,看起来也还可以

3. 参数化实现思路

改变文件格式增加了参数关键之后,就可以实现参数化了

具体的思路主要是两种:

由sanmu框架处理:发现用例中参数化标记后,复制出多份数据,从而变成多个用例,好处是逻辑简单,容易实现,弊端就多了:

只实现了参数化

无法实现 pytest 中其他功能,比如 mark、fixture

无法使用其他 pytest 插件,比如失败重试

由 pytest 处理:发现用例中参数化标记后,留给pytest,这种实现难度大,需对 pytest 内部较深了解,但是好处也很可观

可以支持大部分代码的中的标记用法,比如 mark、skip、fixture

后期功能性、扩展性强

我比较倾向于第二种,为此正在读Pytest的源码,理清pytest在处理参数化测试流程和原理,

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20221203A01U6400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券