ThingWorx Flow > ThingWorx Flow SDK > 连接器测试自动化
连接器测试自动化
连接器测试帮助程序为 CLI 提供了编程界面。CLI 上提供的所有选项也可通过编程接口程序界面提供。对于使用 CLI 将交互式运行转换为自动回归测试,这是非常有用的。
ptc-flow-test-helper npm 模块提供了用于实现连接器集成测试用例自动化的 API。您可以使用这些 API 以及任何 node.js 测试框架 (例如 mocha) 自动执行连接器测试用例。
此 npm 模块中提供了三个 API:
ConnectorTestHelper - 提供用于调用连接器构件的 API
ConnectorSyntaxTestHelper - 验证连接器构件的语法
JSONUtils - 提供在测试用例中用作断言的 JSON 实用程序
ConnectorTestHelper
它提供了用于测试以下连接器构件的 API:
ActionAPI - 连接器操作
ConnectionAPI - 连接器连接
LookupAPI - 连接器查找
TriggerAPI - 连接器触发器
CredsAPI - 用于读取和存储连接器身份验证的实用程序
ActionAPI
在测试单个测试用例时,需要传递使用此方法在测试套件中设置的信息。
方法 setTestInfo 会返回通过 setTestInfo 设置的信息。通过此方法可设置测试套件的级别信息。
签名:setTestInfo (Object info)
info = {
name: <string>,
connector: <connector object>,
version: <integer>,
access_token: <string>,
connection: <string>,
skipSchemaValidation: <boolean>,
logLevel: <string>
}
下表介绍了上述示例中的每个参数:
参数
说明
name
设置将要由测试用例测试的操作
connector
设置将要由测试用例测试的连接器
version
设置将要进行测试的操作版本
access_token
如果连接器使用 OAuth 身份验证机制,请提供存储在 creds.json 文件中的 OAuth 对象的名称。
connection
如果连接器使用连接身份验证机制,请提供存储在 creds.json 文件中的连接对象的名称。
skipSchemaValidation
设置为 true 可跳过操作输入或输出针对输入或输出架构的验证
logLevel
设置 ActionAPI 要使用的日志级别
ActionAPI 在调用操作构件时会使用此方法中设置的信息。
方法 getTestInfo:此方法可返回 setTestInfo 设置的信息
签名:getTestInfo()
返回类型 (Object info)
方法测试
此方法会执行提供的操作构件,并返回连接器操作所返回的结果。
Signature: test(Object input [optional], Object options [optional])
返回类型 promise 对象
input [optional] - 提供符合操作输入 JSON 架构的操作构件所接受的输入对象
options [optional] - 提供包含在对象信息中定义的部分或全部属性的对象。此选项对象的属性值将覆盖 setTestInfo 方法在测试套件级别的信息对象中设置的属性。
例如,为连接 action1 设置了测试套件级别信息。您可以使用此选项对象,通过传递属性 name : action2 来调用执行连接器 action2 而不是 action1 的测试方法。如果 action2 用于创建或删除 action1 的测试套件所需要或创建的测试数据,则此功能将非常有用。
ConnectionAPI
在测试单个测试用例时,需要传递使用此方法在测试套件中设置的信息。
方法 setTestInfo:此方法可返回 setTestInfo 设置的信息。此方法设置了测试套件级别信息。
签名: setTestInfo (Object info)
info = {
name: <string>,
connector: <connector object>,
version: <integer>,
skipSchemaValidation: <boolean>,
logLevel: <string>
下表介绍了上述示例中的每个参数:
参数
说明
name
设置将要由测试用例测试的连接
connector
设置将要由测试用例测试的连接器
version
设置将要进行测试的连接版本
skipSchemaValidation
设置为 true 可跳过操作输入或输出针对输入或输出架构的验证
logLevel
设置 ConnectionAPI 要使用的日志级别
ConnectionAPI 在调用连接构件时使用此方法中设置的信息。
方法 getTestInfo - 返回 setTestInfo 设置的信息
签名:getTestInfo() - 返回类型 (Object info)
方法测试
方法执行提供的连接构件并返回连接器连接构件返回的结果。
Signature: test(Object input [optional], Object options [optional])
返回类型 promise 对象
input [optional] - 提供符合连接输入 JSON 架构的连接构件所接受的输入对象
options [optional] - 提供包含在对象信息中定义的部分或全部属性的对象。此选项对象的属性值将覆盖 setTestInfo 方法在测试套件级别的信息对象中设置的属性。
例如,为连接 connection1 设置了测试套件级别信息。您可以使用此选项对象,通过传递属性 name : connection2 来调用执行连接器 connection2 而不是 connection1 的测试方法。如果 connection2 用于创建或删除 connection1 的测试套件所需要或创建的测试数据,则此功能将非常有用。
LookupAPI
方法 setTestInfo:此方法可返回 setTestInfo 设置的信息。此方法设置了测试套件级别信息。
签名:setTestInfo (Object info)
info = {
name: <string>,
connector: <connector object>,
connection: <string>,
access_token: <string>
logLevel: <string>
}
下表介绍了上述示例中的每个参数:
参数
说明
name
设置将要由测试用例测试的查找
connector
设置将要由测试用例测试的连接器
version
设置将要进行测试的查找版本
connection
如果连接器使用连接身份验证机制,请提供存储在 creds.json 文件中的连接对象名称。
access token
如果连接器使用 OAuth 身份验证机制,请提供存储在 creds.json 文件中的 OAuth 对象的名称。
skipSchemaValidation
设置为 true 可跳过操作输入或输出针对输入或输出架构的验证
logLevel
设置 LookupAPI 要使用的日志级别
方法测试
方法可执行提供的查找构件并返回连接器查找构件所返回的结果。
Signature: test(String method, Object input [optional], Object options [optional])
返回类型 promise 对象
method:提供需要进行测试的查找方法名称。
input [optional]:提供查找方法接受的输入对象。
options [optional]:提供包含在对象信息中定义的部分或全部属性的对象。此选项对象的属性值将覆盖 setTestInfo 方法在测试套件级别的信息对象中设置的属性。
此外,您可以使用此对象提供以下属性。
searchById
设置用于搜索的 ID
searchByValue
设置用于搜索的值
filter
设置用于搜索项的筛选器
例如,如果要通过提供 SearchById 值来执行查找方法,请使用 options 对象提供此信息。
TriggerAPI
在测试单个测试用例时,需要传递使用此方法在测试套件中设置的信息。
方法 setTestInfo - 返回 setTestInfo 设置的信息。此方法设置了测试套件级别信息。
签名: setTestInfo (Object info)
info = {
name: <string>,
connector: <connector object>,
version: <integer>,
access_token: <string>,
connection: <string>,
skipSchemaValidation: <boolean>,
logLevel: <string>
polling: <boolean>
}
下表介绍了上述示例中的每个参数:
参数
说明
name
设置将要由测试用例测试的触发器
connector
设置将要由测试用例测试的连接器
version
设置将要进行测试的触发器版本
access_token
如果连接器使用 OAuth 身份验证机制,请提供存储在 creds.json 文件中的 OAuth 对象的名称。
connection
如果连接器使用连接身份验证机制,请提供存储在 creds.json 文件中的连接对象的名称。
skipSchemaValidation
设置为 true 可跳过操作输入或输出针对输入/输出架构的验证
polling
如果触发器的类型是轮询触发器,则将其设置为 true。
logLevel
设置 TriggerAPI 要使用的日志级别
TriggerAPI 在调用操作构件时使用此方法中设置的信息。
方法 getTestInfo - 返回 setTestInfo 设置的信息
签名:getTestInfo() - 返回类型 (Object info)
方法测试
方法可执行提供的触发器构件并返回连接器触发器构件所返回的结果。
Signature: test(String method, String event, Object input [optional], Object options [optional])
返回类型,promise 对象
method - 提供需要进行测试的触发器方法名称。
event - 提供在触发器输入架构中定义的触发器事件。
input [optional] - 提供触发器方法接受的输入对象。
options [optional] - 提供包含在对象信息中定义的部分或全部属性的对象。此选项对象的属性值将覆盖 setTestInfo 方法在测试套件级别的信息对象中设置的相关属性。
此外,您可以使用此对象提供以下属性,用于测试轮询触发器。
interval
设置触发后的间隔 (以秒为单位)。
stopAfter
设置对触发器调用的最大数量。
meta
设置元对象。
unixTime
用于描述时间点的系统,定义为秒数的近似结果
例如,如果您想要在测试轮询触发器时设置 unixTime,请使用以上选项。
CredsAPI
此文件中使用的方法如下:
getConnectionById - 根据提供的连接对象名称返回连接详细信息。
签名:getConnectionById(uid)
getConnectionByIdWithHandle - 返回句柄对象中的连接详细信息。
签名:getConnectionByIdWithHandle(uid)
getOauthById - 根据提供的 OAuth 对象名称返回 OAuth 详细信息。
签名:getOauthById(uid)
getOauthByIdWithHandle - 返回句柄对象中的 OAuth 详细信息。
签名:getOauthByIdWithHandle()
saveConnection - 保存连接。
签名:saveConnection()
saveOauth - 在 creds.json 文件中保存 OAuth 详细信息。
签名:saveOauth()
JSONUtils API
JSON 断言库
compareJSON (对象 actualJSON、对象 expectedJSON、对象 ignoreDiff [可选]) returnType promise:用于比较 json 对象的断言方法,如果两个 json 对象都匹配,则其返回的 promise 会被解析,否则会拒绝 promise 并显示如下错误:ignoreDiff = { keys : [array of fields to be ignored from comparison]}
verifyArraySubset (对象 actualJSONArray、对象 expectedJSONArray、对象 ignoreDiff [可选]) returnType promise
断言方法,用于比较 actualJSONArray 是否为 expectedJSONArray 的子集
如果 actualJSONArray 是 expectedJSONArray 匹配的子集,则其返回的 promise 会被解析,否则会拒绝 promise 并显示错误
ignoreDiff = { keys : [array of fields to be ignored from comparison]}
ConnectorSyntaxTestHelper API
此方法验证连接器构件的语法。
可用于单位测试,如下所示:
/* eslint-env mocha */
const ConnectorSyntaxTestHelperClass = require('ptc-flow-test-helper').ConnectorSyntaxTestHelper
const connector = require('../../index')
const ConnectorSyntaxTestHelper = new ConnectorSyntaxTestHelperClass(connector)
describe('usgeocoderConnectorSyntaxTest', ConnectorSyntaxTestHelper.tests())