自动化测试 - 存储测试用例,哪个更好
在实现自动化测试的时候,我们经常会使用数据驱动。所以我们经常会把测试数据单独保存在一个特定格式的文件当中,然后通过读取文件去驱动自动化测试代码。
这篇文章会对比 excel、csv 和 yaml 三种主流的文件格式,看看它们哪个更好。
1. 先来看用的最多的 Excel
excel 是世界上使用最广泛的数据文件格式。使用 python 做自动化测试,可以用 openpyxl 这个第三方库操作 excel。
经常有人说 Excel 的操作限制很多,写入和读取的速度很慢。真的是这样吗?
我们做个实验。创建一个空的 Excel 文件,然后插入 1000 条数据,看插入数据和读取这些数据会耗费多久的时间。
插入 1000 条数据会消耗多少时间呢?答案是 0.09 秒,速度并不慢。而读取这 1000 条测试数据消耗的时间,只需要 0.06 秒。
在一个项目当中,1000 个测试用例应该是比较合理的,所以在正常的测试场景下,使用 excel 管理用例数据在读取效率上是合适的。
但是当数据变得越来越大的时候,Excel 的处理速度会越来越慢,读取数据消耗了 7 秒。这就意味着如果你有多个项目需要同时测试,excel 的解析可能会对测试效率造成一定的影响。
2. 再看 csv 格式
不论是进行自动化测试还是进行数据分析,csv 格式都更加合适。这种格式不像 Excel,要去处理表格的样式,它更专注于数据。
而且在 Python 语言当中,内置了 csv 格式的处理模块,用法非常简单,没有太多额外的学习成本。
分别对 1000 行、5 万行和 10 万行数据进行插入和读取操作,csv 的速度都比 excel 要快一个量级。
对于海量数据处理,csv 比 excel 要快很多,代码编写也更简单。但是,使用 csv 格式一定要注意对逗号的处理。在 csv 当中,每一行的数据默认是用逗号分割的,如果你有一个数据当中本身就包含了逗号,一定要记得把这个数据用双引号包裹。
而且,csv 支持的数据格式非常有限,数据被读取出来后都被当成字符串,需要自己添加额外的解析操作。
3. 最后,我们来看看 yaml 的表现
yaml 的优点在于丰富的数据类型支持。无论是元组、字典、数字、布尔类型都能支持,并且被 python 语言轻松解析成对应的 python 数据类型。
在少量数据的解析上,yaml 会非常的方便。但是一旦数据增加到上万组,yaml 的解析速度会非常非常慢。当数据达到 10 万行的时候,读取速度竟然接近 1 分钟。
最近有越来越多的自动化测试人员使用 yaml 存储用例,一方面是看重了它支持的丰富的数据格式,另一方面可能是受了一些框架的影响。
httprunner 这个接口自动化测试框架就采用了 yaml 存储用例数据。其实当存在海量数据需要读取的时候,yaml 的处理速度比 Excel 慢一个量级。所以 httprunner 这样的框架,从测试效率这个维度来讲,更适合做单用例或者少量用例的测试。如果想针对整个项目甚至是多个项目一次性测试的话,httprunner 的执行速度会比较慢。
通过对 Excel、csv 和 yaml 三种格式的操作效率对比可以得出以下结论。
如果你只想对少量的用例进行测试,或者对测试数据的格式要较高的要求,用 yaml 存储用例数据会更利于解析,但是这种场景下一般可以直接使用 postman 这些成熟的工具,没有必要自己实现。
如果你已经习惯了 Excel 的操作。直接使用这种方式就可以了,1 万行以下的数据, Excel 还是非常快的。
不管怎么样,我还是更推荐大家去尝试一下 csv 这种格式。首先、就算是到了 10 万行数据的情况下,它的处理速度也是非常快的。其次,Python 语言当中直接内置了 csv 的模块,它的使用方式和 open.函数非常的相似,几乎没有额外的学习成本。
版权声明: 本文为 InfoQ 作者【和牛】的原创文章。
原文链接:【http://xie.infoq.cn/article/74559817d3a670b1434db8f7a】。文章转载请联系作者。
评论