SOAtest 支持灵活的固定长度消息格式。由于存在很多不同的固定长度格式(并且没有单个标准),Parasoft SOAtest 很容易配置为识别组织团队使用的任何固定长度消息格式。这使我们能够在使用非常专门化的消息类型时,利用 SOAtest 丰富的接口进行消息配置、发送和验证。
为了在 SOAtest 中配置并验证固定长度消息,需要执行以下一次性的配置:
- 定义描述固定长度数据格式的数据模型
- 注册数据模型,以便 SOAtest 可以在固定长度客户端(和其他可应用的工具)中使用它。
此时,你便可以在固定长度客户端、固定长度回调工具和 XML 转换器中使用数据模型。可以在配置固定长度客户端中的消息,并在固定长度客户端输出中配置验证。
创建固定长度数据模型
首先,需要了解我们要创建数据模型的消息格式。考虑一个信息,每个记录位于不同行上,并且仅包含两个字段:一个是 last name,一个是 first name。 每个字段都是 10 个字符长度,右对齐,并由空格填充。
Smith John Doe Jane
若要创建此格式的固定长度数据模型:
- 创建一个新的空 .tst 文件,如下:
- 选择 File> New> Project。
- 选择 SOAtest> Empty Project,然后单击 Next。
- 输入项目名称(固定长度),然后单击 Finish。
- 创建一个新的空数据建模定义文件,如下:
- 跳转至 File> New> Data Model Definition File。
- 输入
Names
作为文件名,并选择 /FixedLength 作为位置。 - 单击 Finish。将打开数据建模编辑器。
- 在 Name 字段中输入
Name
,在 Description 字段中输入First
和Last Name
。
- 展开 General 部分,并指定如下:
- Name - people
- Record name - person
- Record separator - {platform newline}
- 选择 Components 行,然后单击 Add 按钮(编辑器底部)两次,向数据模型添加两个字段。
- 展开第一个字段,并指定如下:
- Name - LastName
- Alignment - right
- 展开第二个字段,并指定如下:
- Name - FirstName
- Alignment - right
- 保存数据模型编辑器。
- 单击编辑器右上角中的 Register data model directory 链接。这将注册我们刚使用 SOAtest 创建的数据模型。该模型现在适用于合适的工具。
创建新的固定长度客户端
若要创建新的固定长度客户端:
- 找到在以前练习中创建的 FixedLength.tst 文件。
- 创建新的固定长度客户端,如下:
- 右键单击测试套件节点,然后选择 Add New> Test。
- 选择 Fixed Length Client,然后单击 Finish。
- 选择刚通过选择 Names:创建的数据模型Message type 组合框中的First and Last Name 。
- 在 Request 选项卡,确保输出模式设置为 Form Input。
- 更改自动生成的 person 元素,以使用
Smith
作为姓,John
作为名。 - 通过选择 people 元素,然后单击表下的 Insert 按钮,添加第二个 person 元素。
选择新的 person 元素,然后输入Doe
作为姓,Jane
作为名。 - 在 Transport 选项卡,在 Router Endpoint 字段中输入
http://localhost:8080/parabank/echo.jsp
。 - 保存编辑器。
- 运行测试。
- 打开通讯报文视图器,验证发送的内容是否与本教程开头显示的示例消息类似。
使用可变数量的重复段扩展固定长度的数据模型
现在让我们假设,对于每个人,我们想要指定该个人拥有的宠物的可变数量。我们将从上面使用的数据格式开始,但是对于每个记录,我们将添加以下内容:
- Number 字段指定宠物的数量为 2 个字符,用 0 填充。
- 可变数量的 sections,其中每个 section 都包含宠物的 type 和 name。sections 的数量等价于指定宠物数字段中的数量。宠物类型的字段为 5 个字符,后对齐,并且宠物名的字段为 10 个字符,右对齐。
下面是该数据的示例:
Smith John00 Doe Jane02 Cat Fluffy Dog Spot
让我们从现有的数据模型开始,将其扩展为一个新的数据模型:
- 创建一个新的数据模型文件,如下:
- 在导航器视图中,打开 FixedLength 项目。
- 右键单击项目并选择 Refresh 以确保该视图为最新更新状态。
- 右键单击 Names.datamodel 文件,并选择 Copy。
- 将其粘贴到 FixedLength 项目中。
- 当出现“新建名称”对话框时,输入
NamesAndPets.datamode
l。
- 双击 FixedLength 项目中新的 NamesAndPets.datamodel 文件。
- 为 name 字段输入
Names and Pets
,并删除描述。 - 选择 Components ,然后单击 Add。将添加一个新的 field。
- 将 Field 更改为 Section,然后再次点击 Add 。将添加一个新的 section。
- 对于顶层部分新增的(第三个)字段,展开该字段的节点,并指定如下内容:
- Name - NumberOfPets
- Type - integer
- Length - 2
- Alignment - right
- Padding - 0
- 对于新的 section,展开 General 节点,并指定如下内容:
- Name - pets
- Recordname - pet
- Criteriafornextrecord - xpath
- XPath - count($section/*) < $section/../NumberOfPets
- 选择新 section 中的 Components 节点,确保选中了 Field ,然后单击 Add 两次。
- 编辑组件,如下:
- 选择新 section 中的 Components 节点,然后单击在 Table中的 Edit 。
- 在行 1 中,指定 Name为
PetType
, Length为5
, Alignment为right
。 - 在行 2 中,指定 Name 为
PetName
, Alignment为right
。 - 单击 Returnto Full Data Model。
- 保存编辑器。
- 选择新 section 中的 Components 节点,然后单击在 Table中的 Edit 。
- 将新的固定长度客户端添加到 FixedLength.tst 文件的测试套件,然后选择 Names and Pets:作为 Message type。
- 输入第一个人的信息,如下:
- 在 Request 选项卡中,选择 people 元素。
- 更改默认值,如下:
- LastName - Smith
- FirstName - John
- NumberOfPets - 0
- 删除 pets 元素。
- 输入第二个人的信息,如下:
- 通过选择 people 元素,然后单击以下表中的 Insert 按钮,添加第二个 person 元素。
- 输入以下值:
- LastName - Doe
- FirstName - Jane
- NumberOfPets - 2
- 为第二个人右键单击 pets 节点,选择 Insert Multiple,并将 Count指定为
2
,然后单击 OK。 - 对于第一个宠物,指定如下内容:
- PetType - Cat
- PetName - Fluffy
- 对于第二个宠物,指定如下内容:
- PetType - Dog
- PetName - Spot
- 在 Transport 选项卡中,将 RouterEndpoint 设置为
http://localhost:8080/parabank/echo.jsp
。 - 保存工具。
- 运行测试。
- 打开通讯报文视图器,验证发送的内容是否与我们正在建模的示例数据类似。
与这些练习相关的 .tst 文件可以在 <SOAtest install dir>/examples/tests/FixedLength.tst
中找到。