Ⅰ.18.2 如何实现Data-Driven Testing

Data-Driven Testing是一种将测试数据(输入,和期望输出)从只包含测试逻辑的测试脚本代码中区别开的方法。对于测试数据正常的实践是从一个文件或数据库中读取一项或记录,对于测试脚本使用数据来测试AUT,然后与期望值比较结果。

这种方法的一个好处是它使得修改测试而不修改测试案例的代码成为可能——相反的我们只是添加更多的测试中将要读取和处理的数据。对于那些有编码经验和无编码经验的测试工程师,它可以分离这些工程师创建测试的职责。那些有编码经验的可以创建测试脚本和编码测试逻辑,那些没有编码经验的可以创建和编辑用于测试AUT的测试数据。

Squish提供一个API 来处理测试数据(如testData),它使得创建数据驱动的测试更容易。这里我们将了解一下如何使用Squish的脚本API来读取和使用测试数据,假定已经导入或拷贝测试数据到testData路径下。

测试数据常常以tab格式包含数据。Squish可以读.tsv(以tab隔开值格式)文件,.csv(以逗号隔开值格式),和.xls(微软Excel表格格式——但非.xlsx格式)。.csv和.tsv文件,Squish假设它们使用UTF-8编码格式——测试脚本也使用这个编码格式。在.tsv文件中,以新的一行隔开记录,以tab隔开区域块。第一条记录用以描述列。这里有个.tsv数据文件的例子——addresses.tsv——用‘\t’描述tab,新的行以'\n'结尾。

 

First Name\tLast Name\tAddress\tEmail\tNumber\n
Max\tMustermann\tBakerstreet 55\tmax@mustermann.net\t1\n
John\tKelly\tRhodeo Drv. 678\tjkelly@acompany.com\t2\n
Joe\tSmith\tQueens Blvd. 37\tjoe@smith.com\t3\n

每个区域块(列)以tab隔开,每一行就是一个新的记录。作为.tsv(和.csv)文件的共同实践,第一行不是这种数据,而是列名字(‘First Name’,‘Last Name’等)。

 

下面有个例子读取每条记录并在Squish的log中打印它的值:

 

for record in testData.dataset("addresses.tsv"):
    firstName = testData.field(record,"First Name")
    lastName = testData.field(record, "Last Name")
    address = testData.field(record, "Address")
    email = testData.field(record, "Email")
    test.log("%s %s, %s; email: %s"%(firstName, lastName, address, email))

注意到我们通过区域块的名字访问数据,因此我们在测试案例代码中使用的名字必须与测试数据文件中的第一行匹配。同样的,尽管数据在结尾有一个‘Number’区域,我们不需要可以忽略它。

 

典型的例子:使用testData.dataset函数找到测试数据文件,该函数在标准路径下搜索测试数据,并返回一个包含记录的数组。(也可以将这个函数的参数设为包含路径的文件名——例如,findFile返回的值),然后使用testData.field 函数来访问某一条记录中单个区域块的内容。通过使用一个for循环可以遍历testdata中每条记录——不需要提前知道他们有多少条记录,因此如果记录发生删除或者添加代码不受影响。当然了,在实际测试中我们将会添加数据到AUT,并比较期望值和实际值,而不是只是打印数据到log中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值