动态调用Action
在以前版本,如果你插入一个外部的Action,那么那个Action就成为测试的一部分,每次打开这个测试都会加载那些Action。而在新版本的QTP中,提供“LoadAndRunAction”语句,可用于在测试脚本运行时加载Action。
这有什么好处呢?举个例子,如果你使用了很多条件语句来调用外部的Action,而你又不想在每次打开测试时都加载那些Action进来,因为并不是每次运行都需要这些Action,那么这个时候“LoadAndRunAction”就很适用了。
通过“LoadAndRunAction”调用的Action只有在测试运行时才被加载和执行,例如下面的例子在Test1中加载Action1并执行一次迭代:
CustomerType = DataTable.Value("Customer_Type","dtGlobalSheet")
NumOfOrder = DataTable.Value("Number_of_items","dtGlobalSheet")
While NumOfOrder > 0
NumOfOrder = NumOfOrder - 1
If CustomerType = "Gold" or CustomerType = "Silver" or CustomerType = "Bronze" Then
LoadAndRunAction "c:\QTPTest\OrderActions", CustomerType&"Order"
Else 'Error value
WrongDataValue CustomerType
End If
Wend
下面的例子同样是动态加载Action1并执行一次迭代,不同的是通过环境变量来存储Action1的路径:
CustomerType = DataTable.Value("Customer_Type","dtGlobalSheet")
NumOfOrder = DataTable.Value("Number_of_items","dtGlobalSheet")
TestPath="c:\QTPTest\"
While NumOfOrder > 0
NumOfOrder = NumOfOrder - 1
If CustomerType = "Gold" Then
LoadAndRunAction Environment("default_path")&"OrderActions", "GoldOrder",oneiteration, NumOfOrder
Elseif CustomerType = "Silver" Then
LoadAndRunAction TestPath&"OrderActions", "SilverOrder", oneiteration, NumOfOrder
Elseif CustomerType = "Normal" Then
LoadAndRunAction TestPath&"OrderActions", "NormalOrder", oneiteration, NumOfOrder
Else 'Error value
Msgbox "WrongDataValue CustomerType "
End If
Wend