QTP DataTable的应用

上一篇 / 下一篇  2014-01-09 11:03:19 / 个人分类:QTP自动化测试相关

要点:

  1. 测试数据和业务脚本分离的好处和优势
  2. 利用 DataTable 将测试数据和业务分离
  3. DataTable 中 Global Sheet 和 Local Sheet 的区别
  4. Test DataTable 与 Run-time DataTable
  5. DataTable 常用方法

DataTable 和 Excel 非常相似。
DataTable是自动化测试的主力和核心组件。
DataTable是将测试数据剥离出脚本的方法之一。

--------------------------------------------------------------------------------

Global 与 Local Sheet 的区别

  1. Global Sheet 是一个全局变量,有几行数据,程序就执行几次
  2. Global Sheet 这个全局变量受 Data Table iterations控制
  3. Local Sheet 是一个局部变量,不受 Data Table iterations控制(无论有多少行数据,它只运行一次)
  4. Local Sheet 这个局部变量受 Action 的 Action Call Properties 设置控制
  5. Global 和 Local 之间的逻辑规则
  • Global(设置为Run on all rows),Action(设置为Run one iteration only)
    1. 双方都具有相同行的测试数据,此时Global和Action的每行都要运行且同步运行
    2. Global的行数大于Local的行数,当Action执行到最后一行后,Global以后所执行的行数,Action都用最后一行数据去补
    3. Global的行数小于Local的行数,Action执行不到大于Global行数的数据
  • Global(设置为Run on all rows),Action(设置为Run on all rows)
    1.  Global执行一行,Action执行所有行

Test DataTable 与 Run-time DataTable

  • Test DataTable------在DataTable里事先准备好的、固定的测试数据,为一组静态数据,是由自动化测试工程师人为事先填写进去的
  • Run-time DataTable------在QTP执行过程中,将测试数据填写到DataTable里,QTP运行结束,测试数据就消失(不会保存在DataTable中),但是可以在测试报告中看到它
  • Run-time DataTable常用于不同脚本或不同Action之间传值

Run-time DataTable脚本之间传值经典例子
Action1:

  1. 进入百度首页
  2. 在搜索框中输入“12306”
  3. 点击“百度一下”按钮

Action2:

  1. 校验在搜索结果页面中的搜索框中是否保留了刚才输入的字样

-------------------------------------------------------
Action1:
Set bjBrowser=Description.Create()
ObjBrowser("micClass").Value="Browser"

Set bjPage=Description.Create()
ObjPage("micClass").Value="Page"

Set bjWebEdit=Description.Create()
ObjWebEdit("micClass").Value="WebEdit"
ObjWebEdit("name").Value="wd"

Set bjWebButton=Description.Create()
ObjWebButton("micClass").Value="WebButton"
ObjWebButton("name").Value="百度一下"

Browser(ObjBrowser).Page(ObjPage).WebEdit(ObjWebEdit).set "12306"
DataTable("A",dtLocalSheet)=Browser(ObjBrowser).Page(ObjPage).WebEdit(ObjWebEdit).GetROProperty("value")
Browser(ObjBrowser).Page(ObjPage).WebButton(ObjWebButton).Click

Set bjWebButton=Nothing
Set bjWebEdit=Nothing
Set bjPage=Nothing
Set bjBrowser=Nothing

Action2:
Set bjBrowser=Description.Create()
ObjBrowser("micClass").Value="Browser"

Set bjPage=Description.Create()
ObjPage("micClass").Value="Page"

Set bjWebEdit=Description.Create()
ObjWebEdit("micClass").Value="WebEdit"
ObjWebEdit("name").Value="wd"

Set all_oWebEdits=Browser(ObjBrowser).Page(ObjPage).ChildObjects(ObjWebEdit)
For i=0 to all_oWebEdits.count-1
Set WebEdit=all_oWebEdits.item(i)
checkValue=oWebEdit.GetROProperty("value")
If checkValue=DataTable("A","Action1") Then
msgbox "pass"
else
msgbox "fail"
End If
Next

Set bjWebEdit=Nothing
Set bjPage=Nothing
Set bjBrowser=Nothing

DataTable 常用方法

DataTable是QTP的一个保留对象,具有很多实用的方法:

  • 动态在DataTable中添加新列并赋值

DataTable.GlobalSheet.AddParameter "Column1","Value1"
DataTable.GlobalSheet.AddParameter "Column2","Value2"
DataTable.LocalSheet.AddParameter "Column3","Value3"

  • 动态对DataTable中的指定的某一个行列中的值进行修改

DataTable.GetSheet("Action1").SetCurrentRow(2)'设置数据插入的行数
DataTable.Value("Column3","Action1")="Row2"
上一行代码也可写为:DataTable.Value(1,2)="Row2"

  • 动态获取DataTable中指定列的值

GetValue1=DataTable("Column1","Global")
msgbox GetValue1
GetValue2=DataTable("Column3","Action1")
msgbox GetValue2
GetValue3=DataTable(1,"Action")
msgbox GetValue3

'循环获取Action1的N列
For i=1 to N
msgbox DataTable(i,"Action1")
Next 

'如有有两个Action,分别为Action1和Action2,要想使它们在获取的时候保持读取的行数一致
CurrentRow=DataTable.GetSheet("Action1").GetCurrentRow
DataTable.GetSheet("Action2").SetCurrentRow(CurrentRow)

  • 动态获取DataTable中指定行的值

getValueByRow=DataTable.GetSheet("Action1").GetParameter("Cloumn3").ValueByRow(2)
msgbox getValueByRow

DataTable.GetSheet("Action1").SetCurrentRow(2)
getValueByRow=DataTable.Value("Column3","Action1")
msgbox getValueByRow

  • 动态获取DataTable中当前行和设置当前行

‘1.获取当前行
msgbox DataTable.GetSheet("Action1").GetCurrentRow
'2.设置当前行
DataTable.GetSheet("Action1").SetCurrentRow(2)

  • 获取DataTable中总行数

AllRowCount=DataTable.GetSheet("Action1").GetRowCount
msgbox AllRowCount


TAG:

 

评分:0

我来说两句

Open Toolbar