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在处理参数化测试流程和原理,
领取专属 10元无门槛券
私享最新 技术干货