存储库数据(如 Excel、CSV 和其他数据源中的数据)由 Parasoft 消息传递工具通过数据源使用。您将定义一个数据源,该数据源指定在何处访问适当的数据,以及(可选地)希望使用哪些可用数据子集。然后,通过对这个数据源参数化值来填充工具。

在 SOAtest 中,存储库数据可以在消息客户机工具中使用,比如 SOAP 客户机、REST 客户机、消息客户机和其他面向客户机的工具。

在 Virtualize 中,存储库数据可以在消息响应器、SQL 响应器和面向客户机的验证工具中使用。有关如何在 SQL 响应程序中使用存储库数据的详细信息,请参阅 SQL 响应程序。下面讨论所有其他情况。

带有表单视图的分层参数化

若要使用表单视图(例如,表单输入或表单 JSON)用存储库中的数据参数化工具值:

  1. 确保您有一个连接到所需存储库的数据源,并且该数据源对套件(包括要参数化的工具)是可用的。
  2. 在要参数化的工具中,执行以下操作:
    1. 确保在数据源区域(编辑器的右上角)中选择了资源库数据源。



    2. 打开所需的表单视图。
    3. 若要用匹配的数据存储库列填充所有项,右键单击树并选择 Populate。通过属性排除选项,可以控制在填充过程中自动添加的可选属性。或者,对于每个要填充存储库值的项,请选择 Parameterized,然后选择包含要使用的值的列的名称。



注意:

提示:从自定义工具访问数据值

当使用自定义工具(例如,通过扩展框架添加的工具)时,您可以通过在适用的工具文本字段中手动输入列名来访问数据存储库列中的值。例如,如果希望访问数据存储库中名为“loanAmount”的键列中的值,则需要在合适的工具字段中输入 ${loanAmount (key)}

  • 复杂元素应该用记录列表列参数化
  • 简单的元素应该用一个基元或基元列表列参数化

带文字视图的分层参数化

若要使用文字视图参数化工具值来自一个存储库的数据:

  1. 确保您有一个连接到所需存储库的数据源,并且该数据源对套件(包括要参数化的工具)是可用的。
  2. 在要参数化的工具中,执行以下操作:
    1. 确保在数据源区域(编辑器的右上角)中选择了资源库数据源。



    2. 打开文字视图。
    3. 编辑消息,使用“ParasoftColumn”指定应该使用哪个数据存储库列,以在消息层次结构中参数化该级别。关于更多详情,请查阅下面 JSON Guidelines XML Guidelines中的指南。

注意,“ParasoftColumn”仅适用于复杂元素;通过使用 {$} 语法访问数据源值,可以参数化简单元素。

例如,假设您有以下数据资源库数据:

body:
	info: "some info about stuff"     
	excludedSimple: "[parasoft_exclude]"     
	optionalSimple: "[parasoft_null]"     
	excluded: []
   	optional: null
    	items: [
		{
			item: [
				{ name: "bill", last: "mclaren", id: "12345"}
				{ name: "steve", last: "smith", id: "45678" }
			]
		}
	]
	codes: [
		{
			code: [ "abc", "efg", "hij" ]
		}
	]

这是一个参数化后使用该数据的 JSON 消息:

{
	"body" : {
		"ParasoftColumn" : "body",
		"info" : "${info}",
		"excludedSimple" : "${excludedSimple}",      
		"optionalSimple" : "${optionalSimple}",      
		"excluded" : {
			"ParasoftColumn" : "excluded",
			"excludedChild" : "${excludedChild}"
		},
		"optional" : {
			"ParasoftColumn" : "optional",
			"optionalChild" : "${optionalChild}"
		},
		"items" : [
			"ParasoftColumn: items",
			{
				"ParasoftColumn" : "item",
				"name" : "${name}",
				"last" : "${last}",
				"id" : ${number:id}
			}
		],
		"codes" : [
			"ParasoftColumn: codes",
			"${code}"
		]
	}
}

一旦参数化完成,预期的 JSON 消息将如下所示:

{
	"body" : {
		"info" : "some info about stuff",
		"optionalSimple" : null,
		"optional" : null,
		"items" : [
			{
				"name" : "bill",
				"last" : "mclaren",
				"id" : 12345
			},
			{
				"name" : "steve",
				"last" : "smith",
				"id" : 45678
			}
		],
		"codes" : [
			"abc",
			"efg",
			"hij"
		]
	}
}

这是一个参数化来使用该数据的 XML 消息:

<root>
	<body ParasoftColumn="body">
		<info>${info}</info>
		<excludedSimple>${excludedSimple}</excludedSimple>
		<optionalSimple>${optionalSimple}</optionalSimple>
		<excluded ParasoftColumn="excluded">
			<excludedChild>${excludedChild}</excludedChild>
		</excluded>
		<optional ParasoftColumn="optional">
			<optionalChild>${optionalChild}</optionalChild>
		</optional>
		<optional>${optional}</optional>
		<items customerAttr="val" ParasoftColumn="items">
			<item ParasoftColumn="item">
				<name>${name}</name>
				<last>${last}</last>
				<id>${id}</id>
			</item>
		</items>
		<codes ParasoftColumn="codes">
			<code>${code}</code>
		</codes>
	</body>
</root>

一旦参数化完成,预期的 XML 消息将如下所示:

<root>
	<body>
		<info>some info about stuff</info>
		<optionalSimple xsi:nil="true"/>
		<optional xsi:nil="true"/>
		<items customerAttr="val">
			<item>
				<name>bill</name>
				<last>mclaren</last>
				<id>12345</id>
			</item>
			<item>
				<name>steve</name>
				<last>smith</last>
				<id>45678</id>
			</item>
		</items>
		<codes>
			<code>abc</code>
			<code>efg</code>
			<code>hij</code>
		</codes>
	</body>
</root>

JSON 指南

  • 对象或数组应该使用记录列表列参数化。
  • 简单对象字段的内容值应该使用基本列参数化。  对于 number 或 boolean 值,内容值应该是 ${number:<value>} 或 ${boolean:<value>}。
  • 简单数组项的内容值应该用基本列表列参数化。对于 number 或 boolean 值,内容值应该是 ${number:<value>} 或 ${boolean:<value>}。
  • 您可以使用变量以及来自存储库数据源的原语或原语列表列进行参数化。
  • 如果使用数据存储库列对对象或数组进行参数化,则不应在同一级别上使用相同名称的任何其他元素。
  • 根对象或数组没有参数化。

XML 指南

  • 复杂元素应该用记录列表列参数化。
  • 简单元素的内容值应该用基本列或基本列表列参数化。
  • 您可以使用变量以及来自存储库数据源的原语或原语列表列进行参数化。
  • 如果使用数据存储库列对元素进行参数化,则不应在同一级别上使用相同名称的任何其他元素。
  • 根元素没有参数化。
  • No labels