财产转移TestSteps用于转移属性。 在许多情况下他们是非常有用的,特别是当涉及包含XML属性,例如当您需要
- 从XML消息获取一个值,例如一个SOAP响应的sessionID
- 一个值写入XML消息,例如保存sessionID或身份验证数据
- 传输属性之间复杂的XML内容
1、属性转换窗口
创建或双击现有属性转换TestStep打开如下窗口:
左侧列表显示你在这TestStep配置的转移,添加和管理。 在选择转移(如“TransferUser”在上面的截图),右边的区域允许您根据需要配置它;
- 顶部的源区指定源转移属性和XPath
- 指定的目标区域下的目标属性和可选的XPath转移
- 下面的区域,不同的配置选项设置。
底部的传输日志显示最新的转移而执行窗口被打开和他们的实际传输值。
可用的配置选项可以大大改变传输什么和各自的定义:
- Fail transfer on error ——转移步骤将会失败如果任何错误发生在试图执行转移时
- Transfer text content ——只有文本内容将被转移。 没有结构元素将被保留下来
- Transfer to all ——匹配的值将被转移到所有目标的位置,以防有几个相匹配
- Entitize transferred values ——例如值会有一定的字符与字符(&)替换为相应的字符实体值(“&”)
- Set null on missing source ——目标将被设置为null,以防源资源丢失。 这意味着,如果目标已经有一个值将丢失
- Ignore empty/missing values ——这意味着如果来源是空的或失踪的匹配值将被忽略和目标值都完好如初
- 使用XQuery ——SoapUI将假定源是XQuery而不是默认的XPath时试图提取源值
- Transfer child nodes ——SoapUI不会尝试任何文本提取匹配的源节点,而是选择匹配的子节点,因此保留子树的XML结构
2。 转换执行
当PropertyTransfer TestStep TestCase运行期间执行,每次 Property Transfer的转移是通过选择由转移源步骤,属性和可选的XPath表达式指定的属性被执行和复制他们的值使用一个可选的XPath表达式指定的属性到目标步骤。 如果指定了XPath表达式,如果他们是同一类型的soapUI将试图将目标节点取代源节点。
源和目标XPath表达式必须都指向现有节点各自的属性,源显然需要节点,所以可以选择,目标属性要求节点可以发现和覆盖。
如果由于缺少比赛的任何XPath表达式任何转移失败,打印错误,要么失败,要么继续,根据“错误失败”选项。
3。 一个例子:传输响应后请求的会话ID
这是一个很常见的场景,让我们做一个详细的介绍。 让说我们有登录服务返回一个我们后来想使用sessionID进行身份验证;将sessionID提取属性转换是完美的,它写入属性可以被所有所需TestSteps使用。 我们开始吧:
- 和执行登录请求添加到一个空的TestCase所以你有一个有效的应对工作;
- 创建属性转换后TestStep请求并添加一个属性转换;
- 配置登录请求的响应的源属性,然后选择右边的“向导”按钮在源属性工具栏。 这将打开一个方便的向导选择所需的源节点的转移(在标准soapUI你需要手动创建生成的XPath语句)。
- 选择节点和按下OK;soapUI为您生成相应的XPath语句;
现在源都设置和你的下一个步骤是配置属性转换的目标,即在它应该在的地方。 我们有两个选择;
- 写一个临时属性可以被所有后续TestSteps需要使用sessionID。 这是最好的解决方案,如果我们想使用sessionID在几个地方或TestSteps
- 它直接传输到目标TestStep(s)的值被使用。 这是更容易,如果你只是想在一个地方使用值
让我们看一看这两种
3.1。 写入一个临时的属性
让财产保存到TestCase属性,我们定义了名称“SessionID”;
现在执行时,将SessionID转移到指定的TestCase属性,以后可以用在任何请求通过标准property-expansion(或另一个属性转换),例如在一个我们可以注销请求
<logout>
<sessionID>${#TestCase#SessionID}</sessionID>
</logout>
当请求被发送这将取代扩展保存的SessionID。
3.2。 直接写TestStep所需的目标
这是更直接,设置目标再注销请求,并使用XPath向导(或XPath技能)来创建目标XPath语句;
导致
现在,当执行这个源目标价值会直接从响应中提取和写入请求消息。