SOAtest 支持灵活的定长消息格式。由于存在很多不同的定长格式(并且没有单个标准),Parasoft SOAtest 很容易配置为识别组织团队使用的任何定长消息格式。这使我们能够在使用非常专门化的消息类型时,利用 SOAtest 丰富的接口进行消息配置、发送和验证。
为了在 SOAtest 中配置并验证定长消息,需要执行以下一次性的配置:
- 定义描述定长数据格式的数据模型。
- 注册数据模型,以便 SOAtest 可以在定长客户端(和其他可应用的工具)中使用它。
此时,您便可以在定长客户端、定长回调工具和 XML 转换器中使用数据模型。可以在配置定长客户端中的消息,并在定长客户端输出中配置验证。
创建定长数据模型
首先,需要了解我们要创建数据模型的消息格式。考虑一个信息,每个记录位于不同行上,并且仅包含两个字段:一个是 last name,一个是 first name。 每个字段都是 10 个字符长度,右对齐,并由空格填充。
Smith John Doe Jane
创建此格式的定长数据模型:
- 创建新的空 .tst 文件:
- 前往文件> 新建> 项目。
- 选择 SOAtest> 空项目,点击下一步。
- 输入项目名称
FixedLength
并点击完成。
- 创建新的数据模型定义文件:
- 前往文件> 新建> 数据模型定义文件。
- 输入
Names
作为文件名,并选择 /FixedLength 作为位置。 - 点击完成。将打开数据建模编辑器。
- 在Names字段中输入
名称
,在说明字段中输入First and Last Name
。
- 展开常规部分,并指定如下内容:
- 名称 -
people
- 记录名 -
person
- 记录分隔符 -
{platform newline}
- 名称 -
- 选择部件行,然后点击两次添加(编辑器底部),为数据模型添加两个字段。
- 展开第一个字段,并指定如下:
- 名称 -
LastName
- 对齐 -
right
- 名称 -
- 展开第二个字段,并指定如下:
- 名称 -
FirstName
- 对齐 -
right
- 名称 -
- 保存数据模型编辑器。
- 点击编辑器右上角的注册数据模型目录链接。这将注册我们刚使用 SOAtest 创建的数据模型。该模型现在适用于合适的工具。
创建新的定长客户端
若要创建新的定长客户端
- 找到在前面的练习中创建的 FixedLength.tst 文件。
- 创建新的定长客户端:
- 右键点击测试套件节点,选择新建> 测试。
- 选择定长客户端,点击完成。
-
- 点击请求选项卡,确保将输入模式设置为表单输入。
- 更改自动生成的 person 元素,以使用
Smith
作为姓,John
作为名。 - 选择 people 元素并点击插入按钮,添加第二个 person 元素。
选择新的 person 元素,然后输入Doe
作为姓,Jane
作为名。 - 点击传输选项卡,在路由端点字段中输入
http://localhost:8080/parabank/echo.jsp
。 - 保存编辑器。
- 运行测试。
- 打开通讯报文查看器,验证发送的内容是否与本教程开头显示的示例消息类似。
使用可变数量的重复段扩展定长数据模型
现在让我们假设,对于每个人,我们想要指定该个人拥有的宠物的可变数量。我们将从上面使用的数据格式开始,但是对于每个记录,我们将添加以下内容:
- 指定宠物数量的数字字段,长度为 2 个字符,以 0 填充。
- 多个区段,每一个区段包含宠物类型和宠物名称。区段数量相当于指定宠物数量字段中的数字。宠物类型的字段为五个字符,右对齐,并且宠物名的字段为十个字符,右对齐。
下面是该数据的示例:
Smith John00 Doe Jane02 Cat Fluffy Dog Spot
让我们从现有的数据模型开始,将其扩展为一个新的数据模型:
- 创建新的数据模型文件:
- 在导航器视图中,打开 FixedLength 项目。
- 右键点击项目并选择刷新以确保该视图为最新更新状态。
- 右键点击 Names.datamodel 文件,并选择复制。
- 将其粘贴到 FixedLength 项目中。
- 当出现新建名称对话框时,输入
NamesAndPets.datamode
l,点击 OK。
- 双击 FixedLength 项目中新的 NamesAndPets.datamodel 文件。
- 为 name 字段输入
Names and Pets
,并删除描述。 - 选择部件,然后点击添加。将添加一个新的字段。
- 将字段更改为区段,然后再次点击添加。将添加一个新的区段。
- 对于顶层部分新增的(第三个)字段,展开该字段的节点,并指定如下内容:
- 名称 -
NumberOfPets
- 类型 -
integer
- 长度 -
2
- 对齐 -
right
- 填充 -
0
- 名称 -
- 对于新的区段,展开常规节点,并指定如下内容:
- 名称 -
pets
- 记录名 -
pet
- 下个记录的前提 -
xpath
- XPath -
count($section/*) < $section/../NumberOfPets
- 名称 -
- 选择新区段中的部件节点,确保选中了字段,然后点击两次添加。
- 编辑组件,如下:
- 点击新区段中的部件节点,然后点击表格中编辑。
- 在行 1 中,指定名称为
PetType
,长度为5
,对齐为right
。 - 在行 2 中,指定 名称为
PetName
,对其为right
。 - 点击返回完全数据模型。
- 保存编辑器。
- 点击新区段中的部件节点,然后点击表格中编辑。
- 将新的定长客户端添加到 FixedLength.tst 文件的测试套件中,然后选择 Names and Pets: 作为消息类型。
- 输入第一个人的信息,如下:
- 在请求选项卡中,选择 people 元素。
- 更改默认值,如下:
- LastName -
Smith
- FirstName -
John
- NumberOfPets -
0
- LastName -
- 删除 pets 元素。
- 输入第二个人的信息,如下:
- 选择 people 元素并点击插入,添加第二个 person 元素。
- 输入以下值:
- LastName -
Doe
- FirstName -
Jane
- NumberOfPets -
2
- LastName -
- 为第二个人右键点击 pets 节点,选择插入多个,并将计数指定为
2
,然后点击 OK。 - 对于第一个宠物,指定如下内容:
- PetType -
Cat
- PetName -
Fluffy
- PetType -
- 对于第二个宠物,指定如下内容:
- PetType -
Dog
- PetName -
Spot
- PetType -
- 点击传输选项卡,将路由端点设置为
http://localhost:8080/parabank/echo.jsp
。 - 保存工具。
- 运行测试。
- 打开通讯报文查看器,验证发送的内容是否与我们正在建模的示例数据类似。
与这些练习相关的 .tst 文件可以在 <SOAtest install dir>/examples/tests/FixedLength.tst
中找到。