测试人社区

junit5, testNG 参数化方法做数据驱动测试方法驱动的一些问题

在实现参数化方法做数据驱动测试时,对比之前没有用到参数化方法,思考了下究竟我们学的junit5和testNG有哪些好处,哪些缺点,为什么选择使用这些参数化方法做数据驱动,希望老师同学多多讨论,给些建议:

  1. 参数化的方法在测试脚本里使用时,便于我们直接调用,比如直接使用csv文件,整个读取到变量里然后在获取,使用,对于在一个测试方法里使用大量数据时,比如不用专门写方法去读文件,文件格式编码不需要考虑,但是,如果没有参数化方法,也是可以自己写方法去读外部文件,然后进行同样的操作,为什么选择junit5或testNG的参数化方法?除了刚才提到的单独写方法,而且,testNG也是需要些方法读外部问文件的,我的核心问题是这种测试需求时,junit5和testNG的参数化方法好处体现在哪?
  2. 当测试方法中需要的数据量不大,但是测试方法比较多,每个方法需要的数据格式一样,内容不一样时,这种从外部读取文件的方法如果不读到内存变量里,每个方法岂不是都需要读文件?如果设计成一个文件中有所有测试方法的数据,当每个方法读数据时,都会读取一些不必要的数据,这根不用参数化数据驱动相比,有什么好处呢?是否有更好的方法,减少io,提升读取效率,按需读取?结合redis?

参数化机制是为了方便测试用例管理的,你用循环读取数据去校验没有问题的,但是管理起来就没有参数化方便。比如参数化后的用例可以隔离开,有独立相对隔离的断言机制与报告机制。参数化本身就是一个循环,并加入了对测试用例机制的支持。测试框架本身就是一种规范,这样各个插件就可以协作输出比较全面的报告了。自己的循环只能生成一个用例,无法生成隔离的多个用例。

你可以读取到变量里的,也可以提前先读取文件到redis,再读取到变量里。

测试数据本身代表了业务,是测试的核心。这部分资产就跟代码是一样重要的,所以要文本化版本化的管理。数据本身如何被读取是可以多样的。