引言
数据驱动是什么?
非驱动方式测试案例
通过添加Template模板的方式,实现数据驱动
将参数放在变量文件中,实现数据驱动
大家平时在写接口或者UI自动化用例的时候,是否遇到这种情况: 写了很多条用例,发现除了个别参数不同,其他的自动化代码完全一样,那能否提取出这些测试代码作为公共代码,并将不同的参数循环应用到公共代码中?
数据驱动,通常将测试数据与功能函数分离,测试数据一般存放在json文件、Excel 文件、txt文件、yaml文件或者python文件或者mysql数据库等数据源中。在自动化测试运行时,读取数据源中的数据,把数据作为参数传递到功能函数中运行多次。
数据驱动的优点:减少重复代码,提升维护效率。
下面我们一起学习下使用RobotFramework(以下简称RF)框架来实现数据驱动的方式
在前面的文章中我们讲过使用RequestsLibrary实现了http接口的自动化用例,先看下面的几个测试用例:
以上3个测试案例,都是通过Get On Session关键字发送http的Get请求,通过观察发现,只有http请求的url不同,其他测试代码完全一样,此时我们可以提取相同的内容变成公用关键字。
按照之前我们介绍的,创建关键字有几种方式,可在测试套件创建keyword,也可以创建resource文件然后再创建keyword,我们还是选择创建resource的文件的这种方式。
1 创建resource文件,并创建http的get请求的关键字如下图(具体步骤可参考之前文章):
2 在测试套件引用该resource文件,并使用创建好的关键字,此时3个用例被改造如下:
3 测试用例中通过添加Template模版的方式,改造为数据驱动,每一行为一个参数
4 选中该条用例执行,查看测试报告:虽然是一条用例但同样被执行了三次
1 在工程test目录新建config目录,新建一个python文件,将上面这些url参数作为一个list变量放在python文件,如下:
2 在测试套件中引用该变量文件
3 在测试用例中通过FOR循环的方式让关键字调用这些参数
4 执行用例,检查报告如下: 发现第二个参数的用例报错了,后面的参数没有执行
此时我们可以使用Run Keyword And Ignore Error,忽略掉报错继续执行
执行结果如下:3个参数都执行了,第2条报错
当然还有其他方法来实现参数和函数功能分离的数据驱动方式,大家可以在实际项目中多尝试,多练习。
共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”
-----指水滴不断地滴,可以滴穿石头;
-----比喻坚持不懈,集细微的力量也能成就难能的功劳