数据池(DataTable)的应用
阶段要点:
测试数据和脚本分离
Global Sheet 和 Local Sheet
Test Data Sheet 与 Run-time Data Sheet
一、测试数据和脚本分离
简单来说,使用DataTable的一个主要作用就是进行测试数据的参数化
而进行参数化又涉及到两个内容:GlobalSheet 和 Local Sheet,
我们就把这两个重点放在一起进行讲解
首先看一个例子,稍后详细介绍
测试搜索框输入三次相同数据:
显然第二种方法更加简练但实际情况中,输入相同数据对于搜索框是没有什么用的,所以延伸下面例子:
循环显示LocalSheet里面的不同测试数据,由此引出我们的另一个知识点
GlobalSheet 和 Local Sheet
学过编程语言应该知道,变量有全局变量和局部变量,其实和这两个词理解差不多
GlobalSheet :全局性,有几行数据脚本就执行几次
Local Sheet:不论测试多少数据,脚本只执行一次,可以理解成迭代
GlobalSheet 是老大,所以倘若GlobalSheet 里面有数据就首先执行,没有才会执行Local Sheet
二、Test Data Sheet 与 Run-time Data Sheet
Test Data Sheet :DataTable里面一开始固定的测试数据,静态数据
Run-time Data Sheet:QTP执行过程中,将测试数据填入到DataTable,运行结束,测试数据消失
两个脚本的数据中转:EMO转出(以后会具体介绍)
DataTable
具体思路就是:(重点)
第一个脚本:首先通过GetRoPorerty()获得运行对象的属性值
动态把值传入 DataTable中GlobalSheet的某个指定列
第二个脚本:动态读取该值并判断
脚本运行,Run-time数据消失,查看TestReport可见运行时测试数据
因为只讲理论太枯燥,就直接上实例:
判断百度搜索内容是否和结果页面出现的内容一致
看到这,你可能会问为什么只能传入到GlobalSheet,因为只有他是可以被共享的,即使是同一脚本
划分不同Action,仍然需要使用GlobalSheet。
三、灵活使用DataTable(重点)
1.动态添加新列赋值
DataTable.GlobalSheet.AddParameter "cloumn","value"
DataTable.LocalSheet.AddParameter "cloumn","value"
2.动态增加新行赋值
DataTable.GetSheet("Action1").setCurrenRow(2)
DataTable.value("演示","Action1")="新值"
或DataTable.value(1,2)="新值" //一列二行的数据填入"新值"
3.动态获取指定列值
get_value=DataTable.Value("演示","Global")
拓展:
循环获取Action1的N列数据
for i=1 to n
msge DataTable(i,"Action1")
两个Action,保持读取行数一致
直接定位行数:DataTable.GetSheet("Action2").setCurrenRow(2)
变量传递:CurrenRow=DataTable.GetSheet("Action1").GetCurrenRow
DataTable.GetSheet("Action2").setCurrenRow(CurrenRow)
4.动态获取指定行的值
get_rowvalue=DataTable.GetSheet("Action2").getParameter("演示").ValueByRow(2)
5.动态获取当前行和设置当前行
CurrenRow=DataTable.GetSheet("Action1").GetCurrenRow //获取当前行
DataTable.GetSheet("Action2").setCurrenRow(2) //设置当前行
DataTable.GetSheet("Action1").AddParameter "演示2","value2"
CurrenRow2=DataTable.GetSheet("Action1").GetCurrenRow //定位到演示2的value行
6.获取总行数
allrows=DataTable.GetSheet("Action1").GetRowCount
下一篇:对象库(进阶篇3)继续加油哦