`

QTP参数化

阅读更多

QTP参数化

参数化种类:数据表、环境变量、随机数、外部数据参数化
1.
数据表(data table)方式参数化
a
file-->settings-->rundata table iterations中设置控制的是数据表中global里数据的运行方式;global是全局的!当运行方式设置为运行全部或多行时,运行几行数据程序就要回放几次!!不能重新设置!!
b
edit-->action-->action call properties-->rundata table iterations中设置控制的是数据表中该action里数据的运行方式;local 是局部的!当运行方式设置为运行全部或多行时,运行几行数据action”就要回放几次!!
进一步说明:
a、当global有多行数据file-->settings-->run On all Rows action有多行数据action call property->Run On all Rows 程序每次运行时,action中的每行都要执行一次
b
、当global 有多行数据file-->settings-->run On all Rows action有多条数据,action call property->Run one iteration only 而且global的行数>action的行数,action执行到最后一行后,不管此时global 的行数为几,下次回放时action都执行最后一行! 如果global的行数<action的行数,action就执行不到最后一行
c
action call property->Run from rows to rows,就结合上面所说可以理解
d
、当同一个action中有多个参数时,且action call property->Run On all Rows 这个时候每个参数的数据个数需要相等

2.随机数(random)参数化
a
、可以指定随机数的范围
b
、可以为该随机数指定名称,同时需要指定该随机参数产生新随机数的方式。这种情况下该随机数可以在别处使用。
产生新随机数的方式:
a
for each action iteration 迭代运行相同的action随机数不变化,运行不同action才重新产生一次随机数

在一个action保持不变
b
for each test iteration 在每一个测试运行的完整过程,随机数保持不变。重复执行该测试的时候随机数变化,例如在data table设置的global参数执行循环情况下。

在一次系统迭代保存不变
c
once per entire test run在整个测试中随机数保持不变,相当于只产生一次随机数

在整个测试中保持不变

3.环境变量(environment)参数化
a
、环境变量的来源有两种:内部环境变量和用户自定义环境变量。内部环境变量是QTP默认定义的一组变量,包括一些系统信息、项目信息等,例如:testdirOS等信息。用户定义的环境变量需要用户自己定义变量名和值,支持从外部导入,格式为XML文件。
b
、环境变量做参数有一定局限性,它对数据操作没有数据表灵活,环境变量用的最多的还是数据的共享
c
、环境变量做参数时,每个参数值都需要指定,而且不能批量生成,所以它有一定的应用场景:当一个test中的不同action需要同样一个参数,用环境变量去参数化常量是个很好的方法;其次就是不同的test需要用到同样的参数时,用环境变量可以很好解决这个问题

4.外部数据源实现参数化
利用外部数据驱动脚本的运行,这是经常用到的方法,这样可以很方便的组织测试数据。相对前三种方法,这种方式数据的读取、控制稍有些麻烦。下面以常见的几种方式进行说明。
a
、数据文件以excel格式组织
Excel组织测试数据是最常用的了。此种驱动可以采用两种方式,将数据ImportDataTab中或是利用com来操纵Excel文件。下面给出这两种方式的示例代码。(输入flight用户名和密码)

<!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter" /> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0" /> <v:f eqn="sum @0 1 0" /> <v:f eqn="sum 0 0 @1" /> <v:f eqn="prod @2 1 2" /> <v:f eqn="prod @3 21600 pixelWidth" /> <v:f eqn="prod @3 21600 pixelHeight" /> <v:f eqn="sum @0 0 1" /> <v:f eqn="prod @6 1 2" /> <v:f eqn="prod @7 21600 pixelWidth" /> <v:f eqn="sum @8 21600 0" /> <v:f eqn="prod @7 21600 pixelHeight" /> <v:f eqn="sum @10 21600 0" /> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" /> <o:lock v:ext="edit" aspectratio="t" /> </v:shapetype><v:shape id="图片_x0020_1" o:spid="_x0000_i1028" type="#_x0000_t75" alt="QTP参数化 - 杰哥 - 杰哥在线" style='width:270.75pt;height:273pt;visibility:visible; mso-wrap-style:square'> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image001.jpg" o:title="QTP参数化 - 杰哥 - 杰哥在线" /> </v:shape><![endif]-->QTP参数化 - 杰哥 - 杰哥在线

方式一、导入到DataTable
'
获得数据文件路径,并将数据文件导入到DataTable运行表中
DataStr= "d:\data.xls"
DataTable.AddSheet("TestData")
DataTable.ImportSheet DataStr,"Sheet1","TestData"
wait 1
'
输入用户名和密码
For i=1 to DataTable.GetSheet("TestData").GetRowCount
systemutil.Run "D:\Program Files\QuickTest Professional\samples\flight\app\flight4b.exe"
DataTable.SetCurrentRow i '
i设置为当前执行行
UserName=DataTable.Value("UserName","TestData")
PassWord=DataTable.Value("PassWord","TestData")
Dialog("Login").WinEdit("Agent Name:").Set UserName
Dialog("Login").WinEdit("Password:").SetSecure PassWord
wait 1
Dialog("Login").WinButton("Cancel").Click
Next

方式二、利用com操纵Excel
DataStr= "d:\data.xls"
Set ExlObj=CreateObject("Excel.Application")
ExlObj.Visible = false'
设置为true的情况,文档会打开
ExlObj.DisplayAlerts = false
Set book=ExlObj.Workbooks.Open(DataStr)
Set sheet=book.Worksheets("Sheet1")

For i=2 to sheet.usedrange.rows.count
systemutil.Run "D:\Program Files\QuickTest Professional\samples\flight\app\flight4b.exe"
UserName=ExlObj.WorkSheets("Sheet1").Cells(i,1) '
或者UserName=sheet.Cells(i,1)
PassWord=ExlObj.WorkSheets("Sheet1").Cells(i,2) '
或者PassWord=sheet.Cells(i,2)
Dialog("Login").WinEdit("Agent Name:").Set UserName
Dialog("Login").WinEdit("Password:").SetSecure PassWord
wait 2
Dialog("Login").WinButton("Cancel").Click
Next
ExlObj.Quit
Set ExlObj = nothing

b、数据文件以txt格式组织

<!--[if gte vml 1]><v:shape id="图片_x0020_2" o:spid="_x0000_i1027" type="#_x0000_t75" alt="QTP参数化 - 杰哥 - 杰哥在线" style='width:300pt;height:301.5pt;visibility:visible; mso-wrap-style:square'> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image002.jpg" o:title="QTP参数化 - 杰哥 - 杰哥在线" /> </v:shape><![endif]-->QTP参数化 - 杰哥 - 杰哥在线

Const ForReading=1
TFilePath= "d:\data.txt"
Set Fso3 = CreateObject("Scripting.FileSystemObject")
Set DataFile= Fso3.OpenTextFile(TFilePath,ForReading,False)
DataFile.SkipLine
Do while DataFile.AtEndOfLine<>true
systemutil.Run "D:\Program Files\QuickTest Professional\samples\flight\app\flight4b.exe"
ReadString = DataFile.ReadLine
DataStr=split(ReadString,",")
Dialog("Login").WinEdit("Agent Name:").Set DataStr(0)
Dialog("Login").WinEdit("Password:").SetSecure DataStr(0)
wait 2
Dialog("Login").WinButton("Cancel").Click
loop
DataFile.close
Set Fso3=Nothing

c、数据文件以数据库组织,下面代码是用Access做的,其他类型数据库类似

<!--[if gte vml 1]><v:shape id="图片_x0020_3" o:spid="_x0000_i1026" type="#_x0000_t75" alt="QTP参数化 - 杰哥 - 杰哥在线" style='width:234pt;height:188.25pt;visibility:visible; mso-wrap-style:square'> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image003.jpg" o:title="QTP参数化 - 杰哥 - 杰哥在线" /> </v:shape><![endif]-->QTP参数化 - 杰哥 - 杰哥在线

strDB="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\data.mdb;Persist Security Info=False"
strTableName="data"
Set Conn=createobject("adodb.connection")
Set Rst=createobject("adodb.recordset")
Conn.open strDB
Rst.open "select * from "+strTableName,Conn,2,2
Dim strTest(1)
Rst.MoveFirst
Do while not Rst.eof
systemutil.Run "D:\Program Files\QuickTest Professional\samples\flight\app\flight4b.exe"
strTest(0)=trim(cstr(Rst.fields(1)))
strTest(1)=trim(cstr(Rst.fields(2)))
Dialog("Login").WinEdit("Agent Name:").Set strTest(0)
Dialog("Login").WinEdit("Password:").SetSecure strTest(1)
Rst.MoveNext
wait 2
Dialog("Login").WinButton("Cancel").Click
Loop
Rst.close
Set Conn=nothing

d、数据文件以xml格式组织

<!--[if gte vml 1]><v:shape id="图片_x0020_4" o:spid="_x0000_i1025" type="#_x0000_t75" alt="QTP参数化 - 杰哥 - 杰哥在线" style='width:276pt; height:225pt;visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image004.jpg" o:title="QTP参数化 - 杰哥 - 杰哥在线" /> </v:shape><![endif]-->QTP参数化 - 杰哥 - 杰哥在线



Dim xmlDoc 'As DOMDocument
需要引用xml对象
set xmlDoc=CreateObject("microsoft.xmldom")
xmlDoc.load("d:\testdata.xml")
Set Root=xmlDoc.documentElement
For i = 0 To Root.childNodes.Length-1
systemutil.Run "D:\Program Files\QuickTest Professional\samples\flight\app\flight4b.exe"

Set TestCases = Root.childNodes.Item(i)
For j = 0 To TestCases.childNodes.Length-1
Set TestCase = TestCases.childNodes.Item(j)
If cstr(TestCase.nodeName)="UserName" Then
Dialog("Login").WinEdit("Agent Name:").Set TestCase.text
end if
If cstr(TestCase.nodeName)="PassWord" Then
Dialog("Login").WinEdit("Password:").SetSecure TestCase.text
End If
Next
wait 2
Dialog("Login").WinButton("Cancel").Click

Next
Set root=nothing
Set xml=nothing

分享到:
评论

相关推荐

    QTP的参数化

    QTP脚本参数化,初步交代QTP脚本的使用方式、方法

    第8篇-QTP参数化技术

    第8篇-QTP参数化技术 第8篇-QTP参数化技术

    qtp描述性编程实现参数化

    qtp中使用编程方法实现参数化。 qtp中使用编程方法实现参数化。

    软件测试工具QTP参数化global和local的区别

    自动化测试local软件测试工具QTP参数化global和local的区别MercuryQuickTest企业级自动化测试工具!目前已经被惠普收购,正式名字为HPQuickTestProfessionalsoftware,最新的版本为HPQuickTestProfessional10.0....

    QTP描述性编程技术集锦

    26. QTP 参数化实例 60 27. 对象库的管理与合并 62 28. QTP中虚拟对象设置 66 29. QTP删除新建文本文件没有权限的问题 68 30. 关于Filter如何使用的疑问 69 31. Call Windows API 69 32. Global 和local区别 72 33. ...

    QTP订机票参数化测试代码

    本人调试无错的QTP订机票参数化测试代码

    QTP入门-检查点输出值参数化 录像

    QTP入门-检查点输出值参数化 录像 检查点 输出值 参数化 同步点 1.检查点 目的: 检查点比较指定属性的当前值与期望值,以判断当前的程序(或站点)功能是否正常。 在密码正确的情况下预期结果是进入主界面,检查...

    QTP技术集锦--总结

    26. QTP 参数化实例 60 27. 对象库的管理与合并 62 28. QTP中虚拟对象设置 66 29. QTP删除新建文本文件没有权限的问题 68 30. 关于Filter如何使用的疑问 69 31. Call Windows API 69 32. Global 和local区别 72 33. ...

    QTP描述性编程,参数化,读取excel,数据库

    QTP描述性编程,参数化,读取excel,数据库

    QTP自带Flight示例程序登录模块完整自动化测试

    使用QTP自动化测试工具测试其自带Flight示例程序的登录模块 用户名 ,密码参数化(用户名密码各种情况的判断),按钮的检查等

    QTP自动化测试进阶

    1.3.4 测试程序参数 1.3.5 培训计划 1.3.6 技术环境 1.3.7 自动化工具兼容性检查 1.3.8 风险评估 1.3.9 测试计划归档 1.3.10 自动化测试数据 1.3.11 自动化测试环境 1.3.12 角色和责任 1.3.13 自动化测试系统管理 ...

    qtp的参数化,供大家参考。、

    我也是最近学习qtp的,写了些参数化的东西,不知道怎么样,希望大家给点意见,谢谢

    QTP实验二-飞机订票系统.doc

    (1)理解和掌握自动化测试的基本原理和方法。 (2)掌握QTP标准检查点的设置方法。 (3)掌握QTP动态捕捉信息与循环脚本的设计的方法。 2实验要求 (1)使用QTP对订票程序的Insert order功能进行测试,验证订票是否...

    QTP自动化培训资料,收藏

    QTP自动化培训资料,收藏 QTP的基本使用、检查点、脚本参数化和多Action脚本、等等

    QTP快速入门教程学习

    4.1.1 参数化对象和检查点的属性值 24 4.1.2 参数化操作的值 25 4.2 参数种类 26 4.2.1 使用数据表参数 27 4.2.2 使用环境变量参数 28 4.2.3 使用随机数字参数 28 4.3 参数化测试脚本 29 4.3.1 定义参数 29 4.3.2 ...

    qtp测试飞机订票使用DataTable参数化实验.doc

    qtp测试飞机订票使用DataTable参数化实验.doc

    QTP教程(中文)04参数化

    4.1参数化步骤和检查点中的值 4.2 参数种类 4.3 参数化测试脚本

    介绍如何进行QTP数据驱动测试

    本章介绍如何在自动化测试过程中使用数据驱动的测试脚本开发方式,对测试脚本进行参数化,包括如何使用QTP的Data Table参数化、Action参数化、环境变量参数化等脚本参数化的方法。 数据驱动的测试方法要解决的核心...

    QTP教程(适合新手用,绝对值)

    4.1.1 参数化对象和检查点的属性值 24 4.1.2 参数化操作的值 25 4.2 参数种类 26 4.2.1 使用数据表参数 27 4.2.2 使用环境变量参数 28 4.2.3 使用随机数字参数 28 4.3 参数化测试脚本 29 4.3.1 定义参数 29 4.3.2 ...

    QTP应用培训-更新

    QTP的参数化-DataTable QTP操作Action QTP验证点与测试报告 VBS基础 常用WEB控件介绍 AOM 场景恢复 正则表达式的运用 Html中DOM的运用 函数资源库 环境变量 常用保留对象 VBS-操作文件 VBS-正则表达式

Global site tag (gtag.js) - Google Analytics