第五章输出值通过QuickTest可以检索测试或组件中的值,并将这些值作为输出值存储。此后,就可以检索这些值,并在运行会话的不同阶段使用该值作为输入。输出值是一个步骤,在该步骤中,捕获测试或组件中某个特定点的一个或多个值,并在运行会话持续时间存储这些值。随后,在运行会话中的不同点,可以将这些值作为输入使用。可以输出任何对象的属性值。还可以从文本字符串、表单元格、数据库和XML文档输出值。创建输出值步骤时,可以确定运行会话持续时间内的值存储在哪里,以及如何使用这些值。运行会话期间,QuickTest检索指定点的每个值并将其存储在指定位置。以后当运行会话中需要值时,QuickTest将从该位置检索值并根据需要来使用。5.1创建输出值5.1.1输出值类型将输出值步骤添加到测试或组件时,首先选择要输出的值的类别,例如,属性值、文本值或XML元素值。然后,就可以确定要输出的值以及每个值的存储位置。在QuickTest中可以创建以下几个类别的输出值:标准输出值文本和文本区输出值数据库输出值XML输出值1.标准输出值可以使用标准输出值来输出大多数对象的属性值。例如,在基于Web的应用程序中,一个网页中的链接数可能基于用户在上一页的表单中所做选择的不同而变化。可以在测试中创建一个输出值,来存储页面中的链接数。还可以使用标准输出值来输出表单元格的内容。2.文本和文本区输出值可以使用文本输出值来输出屏幕或网页中显示的文本字符串。创建文本输出值时,可以输出对象文本的一部分。还可以指定要在输出文本之前和之后输出的文本。可以使用文本区域输出值来输出WindowsApplications中屏幕已定义区域内显示的文本字符串。例如,假设在测试的应用程序中,想要存储显示在特定步骤之后的任何错误消息的文本。在If语句中,查看带有已知标题栏值(例如Error)的窗口是否存在。如果该窗口存在,则输出该窗口中的文本(假设窗口大小与所有可能的错误消息的大小相同)。在使用基于Windows的应用程序文本输出值时应注意以下事项:在基于Windows的应用程序中创建文本或文本区输出值时使用文本识别机制,有时会检索到不想要的文本信息(例如隐藏文本和带阴影的文本,这些文本会作为同一字符串的多个副本显示)。此外,在不同的运行会话中,文本(和文本区)输出值的表现方式可能不同,具体取决于使用的操作系统版本、已经安装的ServicePack、安装的其他工具包、的应用程序中使用的API等等。3.数据库输出值可以使用数据库输出值,基于在数据库上定义的查询的结果(结果集)来输出数据库单元格内容的值。可以从结果集的全部内容中创建输出值,也可以从其中某一部分创建输出值。在运行会话过程中,QuickTest从数据库中检索当前数据,并根据指定的设置来输出值。4.XML输出值可以使用XML输出值输出XML文档中的XML元素和属性的值。运行会话完成后,可以在“测试结果”窗口中查看XML输出值的概要结果。还可以通过打开“XML输出值结果”窗口来查看详细结果。例如,假设网页中的某个XML文档包含新车的价目表。可以通过选择要输出的相应的XML元素值来输出特定汽车的价格。以下给出每种环境支持的输出值类型:输出值类别Web标准WindowsVBActiveX其它环境标准SSSSNA页(标准)SNANANANA表(标准)SNANASNA文本SSSSNA文本区NSSSSNA数据库NSNANANAS(DbTable)XMLSNANANAXML文件*S--支持NS--不支持NA--不适用5.1.2存储输出值定义输出值时,可以指定运行会话期间在哪里以及如何存储每个值。可以将值输出到:测试、操作或组件参数运行时数据表环境变量1.将值存储在测试、操作或组件参数中可以将值输出到操作或组件参数,以便可以在运行会话后面的部分中使用来自运行会话某一部分的值,或者传递回运行(调用)测试或组件的应用程序。例如,假设要测试一个购物应用程序,该程序计算采购费用,并自动从账户中扣除采购金额。想要测试在每次运行带有不同的采购单的操作或组件时,该应用程序是否能够正确地从账户中扣除采购金额,可以将花费的总金额输出到某个操作或组件的参数值,然后在稍后的扣除该金额操作中的运行会话部分使用该值。2.将值存储在运行时数据表中对于要运行多次的由数据驱动的测试(或操作)来说,将值输出到运行时数据表的选项特别有用。在每次重复或循环中,QuickTest检索当前值并将其存储在运行时数据表的相应的行中。例如,要测试一个航班预定应用程序,因此设计了一个测试来创建新预定,随后查看预定详细信息。每次运行测试时,应用程序为新预定生成一个唯一的订单号。要查看预定,应用程序要求用户输入相同的订单号。运行该测试之前,还不知道订单号。要想解决这个问题,就要将在创建新预定时生成的唯一订单号的值输入数据表中。然后,在“ViewReservation”屏幕中,使用包含存储值的列将输出值插入订单号输入字段中。运行测试时,QuickTest检索站点为新预定生成的唯一订单号,并在运行时数据表中输入此输出值。测试到达查看预定所需的订单号输入字段时,QuickTest将存储在运行时数据表中的唯一订单号插入订单号字段中。3.将值存储在环境变量中将值输出到内部用户定义的环境变量时,可以在运行会话后面的阶段使用该环境变量输入参数。例如,假设在测试一个应用程序,该程序会提示用户在“欢迎使用”页输入账号,然后显示用户姓名。就可以使用文本输出值来捕获显示的名称值,并将其存储在环境变量中。然后,可以检索环境变量中的值以便在应用程序的其他位置中输入用户的姓名。5.2输出属性值5.2.1定义标准输出值通过“输出值属性”对话框可以选择要输出的属性值,并定义您选择的每个值的设置。关闭此对话框之前,可以为相同对象选择许多属性并为每个属性值定义输出设置。运行会话过程中到达输出值步骤时,QuickTest将检索所有指定的属性值。1.标识对象对话框的上部显示有关要创建输出值的测试对象的信息:项目描述名称测试对象的名称类对象的类别2.选择要输出的属性值对话框的上半部分包含一个窗格,其中列出选定对象的属性,以及它们的值和类型。该窗格包含以下项:窗口元素描述复选框要指定将输出的属性,选择相应的复选框,可以为对象选择多个属性,并为选择的每个属性值指定输出选项。类别图标表示属性的值当前为常量图标表示属性的值当前存储在测试、操作或组件参数中图标表示属性的值当前存储在运行时数据表中图标表示属性的值当前存储在环境变量中属性属性的名称值属性的当前值3.指定属性值的输出设置选择属性的复选框时,将突出显示属性详细信息,并且在“配置值”区域中显示选定属性值的当前输出定义。第一次选择要输出的属性值时,“配置值”区域中会显示值的默认输出定义。选择要输出的属性值时,可以:通过选择其他属性值或单击“OK”接受显示的输出定义。通过单击“修改”按钮更改选定值的输出类型和/或设置。将打开“输出选项”对话框并显示该值当前的输出类型和设置。5.2.2指定输出类型和和设置为每个值定义的输出类型和设置决定该值在运行会话中的存储位置以及使用方式。到达输出值步骤时,QuickTest检索为输出选定的每个值并将其存储在指定位置,以供以后在运行会话中使用。新建输出值步骤时,QuickTest为选定要输出的每个值指定一个默认定义。可以通过选择不同的输出类型并/或更改输出设置来更改选定值的当前输出定义:将值输出到操作或组件参数将值输出到数据表将值输出到环境变量1.将值输出到操作或组件参数可以将值输出到操作或组件参数,以便这些值可以在运行会话的后面部分中使用,或者传递回运行(调用)测试或组件的外部应用程序。如果参数已经定义为用于调用操作或组件的输出参数,只能将值输出到操作或组件参数。此外,仅当输出值类型和参数值类型匹配时,将值输出到操作或组件的选项才可用。选择“测试参数”、“操作参数”或“组件参数”作为输出类型时,通过“输出选项”对话框可以选择在其中存储运行会话持续时间的选定值的参数。2.将值输出到数据表选择“数据表”作为输出类型时,通过“输出选项”对话框可以指定在运行时数据表中存储选定值的位置。在将值输出到数据表时,有以下选项可以修改:名称--指定数据表中要存储值的列的名称。QuickTest建议使用输出的默认名称。可以从列表中选择现有的输出名称,也可以通过使用默认输出名称或输入有效的描述性名称来新建输出名称。数据表中的位置--输出测试的值时,指定将数据表列名称添加到数据表的全局工作表还是当前操作工作表中。3.将值输出到环境变量如果选择“环境”作为输出类型时,通过“输出选项”对话框,可以指定要在其中存储运行会话持续时间的选定值的环境参数,该参数由内部用户定义。5.3在脚本中建立输出值5.3.1建立输出值在上一章中,因为在表格检查点中机票价钱的预期结果,并没有随着出发地点的改变而变动,导致第二、第三次的执行结果是失败的。现在,我们从“SelectaFlight:Mercury”网页上取得机票价钱,并且已取得的机票价钱更新表格检查点的预期结果,这样一来,测试脚本就可以利用在“SelectaFlight:Mercury”网页上取得的机票价钱去验证“BookaFlight:Mercury”上显示的机票价钱。1.首先,我们打开Parameter测试脚本,将脚本另存为“Output”测试脚本。2.在树视图中,展开“Welcome:MercuryTours”并且点击“SelectaFlight:Mercury”网页,在ActiveScreen窗口会显示相应的页面。在ActiveScreen窗口中选取框住270,然后点击鼠标右键,选择“InsertTextOutput”,打开“TextOutputValueProperties”对话窗口:3.在“TextOutputValueProperties”对话窗口中点击“Modify”按钮,打开“OutputOptions”对话窗口:在名字字段显示Select_a_Flight_MercuryOutput_Text_out,将其改成depart_flight_price,接受其它默认值,点击“OK”确认,QuickTest会在DataTable中加入depart_flight_price字段。在DataTable上的depart_flight_price字段的第一行会显示从应用程序上取得的输出值(270)。在执行时,第一次QuickTest会取得一样的值270,接下来的第二、第三次会从应用程序上取得实际值,并存放在DataTable中。4.修正表格检查点的预期值在树视图中,展开“Welcome:MercuryToursBookaFlight:Mercury”,在“Checkpoint"NewYorktoSanFrancisco"”上点击鼠标右键,选择“CheckpointProperties”,打开“TableCheckpointProperties”对话窗口。选中第三行,第三列(被勾选的字段),在“Configurevalue”中选择“Parameter”然后点击“ParameterOptions”按钮,打开“ParameterOptions”对话窗口:在窗口的名字下拉列表中选择depart_flight_price。5.点击“OK”回到“TableCheckpointProperties”对话窗口,可以看到这个检查点的预期结果已经被参数化了。点击“OK”关闭“TableCheckpointProperties”窗口,保存测试脚本5.3.2执行并分析使用输出值的测试脚本在上面我们在建本中建立侧输出值,并且将表格检查点参数化,现在,执行Output测试脚本。执行测试脚本:点击工具栏上的“Run”按钮,开启Run对话窗口,选取“Newrunresultsfolder”,其余为默认值,点击“OK”开始执行脚本。当脚本运行结束后,会开启测试结果窗口。在执行结果窗口中,点击树视图中的“Run-Time-Data”,可以在表格中看到执行测试时使用的输出