使用函数测试 GUI 应用程序

本练习介绍如何创建和使用用户定义的函数,这对于处理默认情况下不受特定对象类支持的任务非常有用。

新建用于测试函数的测试

创建现有 MyFlight 测试的副本,您可以在其中添加函数库并使用它来测试您的应用程序。

要创建测试,请执行以下操作:

  1. 首先在 UFT One 中打开 MyFlightApplication 解决方案。

    如果您已关闭并打开 UFT One,请确保在已加载 WPF 插件的情况下启动它。

  2. 在解决方案浏览器中,右键单击 MyFlight 测试节点并选择“另存为”

  3. 将测试保存在同一位置 (C:\Users\<username>\Documents\UFT One)。

    在“文件名”字段中,输入 MyFlightFunction,然后单击“保存”

解决方案浏览器将转而切换为显示 MyFlightFunction 测试,并且所有操作和步骤均与原始 MyFlight 测试相同。

提示: 要同时显示两个测试,请将 MyFlight 测试重新添加到解决方案中。

在解决方案浏览器中,右键单击该解决方案节点,然后选择“添加”>“添加现有测试”。选择 MyFlight 测试。

返回页首

创建函数并将其与测试关联

创建函数以测试 MyFlights 应用程序中的日期是否以正确格式显示且实际有效。

将其与 MyFlightsFunction 测试关联以使其可供使用。

要创建函数并关联它,请执行以下操作;

  1. 在工具栏上,单击“新建”按钮向下箭头 并选择“新建函数库”

    在“新建函数库”对话框中,执行以下操作:

    1. 确保定位到 C:%HOMEPATH%\My Documents\UFT One 文件夹中。
    2. 新建名为 TutorialFunctionLibraries 的子文件夹并将其打开。
    3. 在“文件名”字段中,输入 CheckDateFunction 来命名新函数库。
    4. 单击“创建”

    新的 CheckDateFunction 将作为新选项卡在 UFT One 中打开。

  2. 将以下代码复制并粘贴到 CheckDateFunction 文件中。

    此函数可验证日期格式是否为“DD-<MMM 字符串>-YYYY”,以及是否为应用程序的实际有效日期。

    Copy code
    'The following function checks whether a date string (dateStr)
    'has the characters representing DD-<MMM string>-YYYY
    Function check_data_validity( dateStr )
     Dim firstDashPos, secondDashPos
     Dim mmPart, ddPart, yyyyPart
     firstDashPos = inStr( dateStr , "-" )
     secondDashPos = inStrRev( dateStr, "-" )
     If ( (firstDashPos <> 2 and firstDashPos <> 3) or (secondDashPos <> 6 and secondDashPos <> 7)) Then
       reporter.ReportEvent micFail,"Format check", "Date string is: "&" missing at least one dash ( - )."
       check_data_validity = False
       Exit function
     End If
     If firstDashPos = 2 Then
       ddPart = mid( dateStr, 1, 1)
     else
       ddPart = mid( dateStr, 1,2 )
     End If
     mmPart = mid( dateStr, firstDashPos+1, 3 )
     yyyyPart = mid( dateStr, secondDashPos +1 , 4 )
     If  not( mmPart="Jan" or mmPart="Feb" or mmPart="Mar" or mmPart="Apr" or mmPart="May" or mmPart="Jun" or mmPart="Jul" or mmPart="Aug" or mmPart="Sep" or mmPart="Oct" or mmPart="Nov" or mmPart="Dec")  Then
       reporter.ReportEvent micFail, "Format Check", "The month: "& mmPart&"is invalid.It is not a valid month string."
       check_data_validity = False
       Exit function
     End If
     If ddPart > 31 Then
       reporter.ReportEvent micFail, "Format Check", "The date: "& ddPart&"is invalid.It exceeds 31."
       check_data_validity = False
       Exit function
     End If
     If yyyyPart < 2021 Then
       reporter.ReportEvent micFail, "Format Check", "The year: "&yyyyPart&" is invalid.(Prior to this year.)"
       check_data_validity = False
       Exit function
     End If
     check_data_validity = True
    End Function
  3. 保存,然后关闭函数库文件。
  4. 将新函数库与 MyFlightsFunction 测试关联:

    1. 在解决方案浏览器中,右键单击 MyFlightsFunction 测试节点,并选择“添加”>“关联函数库”
    2. 在“打开函数库”对话框中,选择 CheckDateFunction.qfl 文件,然后单击“打开”

    CheckDateFunction 将添加到解决方案浏览器中位于单独的“函数库”子文件夹下的 MyFlightsFunction 测试中。

  5. 保存测试,然后继续学习查找要检查的日期属性的名称

返回页首

查找要检查的日期属性的名称

您在前面的步骤中添加的函数将检查日历对象的日期格式。

要在测试中验证此日期格式,必须先找到并记下要对其执行此检查的特定对象的属性。

要验证日期属性的格式,请执行以下操作:

  1. 打开 MyFlights GUI 示例应用程序,然后登录。

    有关更多详细信息,请参阅航班 GUI 层

  2. UFT One 中,单击工具栏中的“对象标识中心” 按钮。

  3. 在 OIC 中,单击“启动侦测”按钮 。OIC 窗口已被 OIC 小组件 取代。

    UFT One 最小化以显示 MyFlights 应用程序。单击日期字段以让 OIC 捕获其属性。

  4. 在 OIC 中滚动浏览标识属性,直到看到“日期”值并记下属性名称。

    例如:

  5. 关闭 OIC 并返回到测试。
  6. 在 MyFlightFunction 测试中,在编辑器中打开 FlightFinder 操作。
  7. 在 FlightFinder 操作中,将光标置于 WpfCalendar.SetDate 步骤之后,并按 Enter 添加新行。
  8. 添加一个步骤以检索 datePicker 对象的 date 属性。这样可确保 UFT One 包含正确运行该函数所需的详细信息。

    将以下代码复制并粘贴到操作中的新行:

    Copy code
    currentDate = WpfWindow("OpenText MyFlight Sample").WpfCalendar("datePicker").GetROProperty("DisplayDate")
    orderDate = currentDate + 10
    WpfWindow ("OpenText MyFlight Sample").WpfCalendar("datePicker").SetDate orderDate
    departureDate = WpfWindow("OpenText MyFlight Sample").WpfCalendar("datePicker").GetROProperty("date")
  9. 添加另一个步骤以调用检查点函数。将以下代码复制并粘贴到 departureDate 步骤之后的新行。

    If check_data_validity(departureDate) Then
    	reporter.ReportEvent micPass, "Date is valid", departureDate
    End If
  10. 保存测试并继续学习以下主题:

返回页首

在编辑器中查看操作

验证现在操作在编辑器中是否包含以下行:

 

WpfWindow("OpenText MyFlight Sample").WpfComboBox("fromCity").Select "Los Angeles"
WpfWindow("OpenText MyFlight Sample").WpfComboBox("toCity").Select Sydney
currentDate = WpfWindow("OpenText MyFlight Sample").WpfCalendar("datePicker").GetROProperty("DisplayDate")
orderDate = currentDate + 10
WpfWindow ("OpenText MyFlight Sample").WpfCalendar("datePicker").SetDate orderDate
departureDate = WpfWindow("OpenText MyFlight Sample").WpfCalendar("datePicker").GetROProperty("date")
If check_data_validity(departureDate) Then
reporter.ReportEvent micPass, "Date is valid", departureDate
End If
WpfWindow("OpenText MyFlight Sample").WpfComboBox("Class").Select Business
WpfWindow("OpenText MyFlight Sample").WpfComboBox("numOfTickets").Select "2"
WpfWindow("OpenText MyFlight Sample").WpfButton("FIND FLIGHTS").Click

返回页首

在关键字视图中查看操作

切换到关键字视图,并记下新的 datePicker GetROPropertyFunction Call 步骤。

返回页首

运行函数测试并分析结果

运行测试以了解 UFT One 如何执行函数检查来验证日期格式和值。

要运行测试,请执行以下操作:

  1. 关闭所有已打开且运行 MyFlights 的窗口。

  2. 在工具栏中,单击“运行”

    在“运行”对话框中,确保 MyFlightFunction 测试和“新运行结果文件夹”选项处于选中状态。

  3. 单击 “运行”
  4. 测试运行完成并打开运行结果后,在“测试流”中向下滚动到 FlightFinder 操作 > Date is valid 节点。

    请注意,步骤名称旁边将显示绿色的复选标记。根据您已添加的函数,这表示检查点已通过检查。

返回页首

后续步骤: