Автоматизация тестирования соединителя
Помощник тестирования соединителя позволяет использовать программируемый интерфейс для CLI. Все возможности, предоставленные в командной строке, могут также быть предоставлены через программный интерфейс. Это полезно для преобразования интерактивного выполнения с использованием командной строки в автоматизированное регрессионное тестирование.
NPM-модуль ptc-flow-test-helper содержит интерфейсы API, позволяющие автоматизировать тестовые сценарии интеграции соединителей. Можно использовать эти интерфейсы API вместе с любой платформой тестирования node.js (например, Mocha) для автоматизации тестовых сценариев соединителей.
В данном NPM-модуле находится три интерфейса API:
• JSONUtils - предоставляет утилиты JSON для использования в качестве утверждений в тестовом сценарии.
ConnectorTestHelper
Содержит интерфейсы API для тестирования следующих артефактов соединителей:
• 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, укажите наименование объекта OAuth, хранящееся в файле creds.json. |
connection | Если для соединителя используется механизм аутентификации соединения, укажите наименование объекта соединения, хранящееся в файле creds.json. |
skipSchemaValidation | Задайте значение ИСТИНА для опции пропуска проверки ввода или вывода действия в соответствии со схемой ввода или вывода |
logLevel | Задайте уровень журнала, который должен использоваться интерфейсом ActionAPI |
Интерфейс ActionAPI использует информацию, заданную в этом методе при вызове артефакта действия.
Метод getTestInfo - возвращает информацию, заданную методом setTestInfo.
Сигнатура: getTestInfo()
Тип возврата (информация объекта)
Метод test
Этот метод выполняет указанный артефакт действия и возвращает результат, возвращенный действием соединителя.
Signature: test(Object input [optional], Object options [optional])
Тип возврата: объект Promise
◦ input [optional] - укажите объект входных данных, принимаемый артефактом действия, который соответствует схеме JSON входных данных действия.
◦ options [optional] - укажите объект, содержащий некоторые или все свойства, определенные в элементе Object info (информация об объекте). Это значение свойств объекта опций переопределяет соответствующие свойства, которые были заданы в объекте info на уровне набора тестов в методе setTestInfo.
Например, на уровне набора тестов задана информация для соединения action1. Можно использовать этот объект опций для вызова метода тестирования, выполняющего действие action2 соединителя вместо действия action1, если передать свойство name : action2. Это удобно, если action2 используется для создания или удаления данных теста, требуемых или создаваемых набором тестов для выполнения action1.
ConnectionAPI
Информация, заданная в тестовом наборе с помощью этого метода, должна передаваться при тестировании отдельного тестового сценария.
Метод setTestInfo - возвращает информацию, заданную параметром setTestInfo. Этот метод задает информацию на уровне набора тестов.
Сигнатура: setTestInfo (Object info)
info = {
name: <string>,
connector: <connector object>,
version: <integer>,
skipSchemaValidation: <boolean>,
logLevel: <string>
В следующей таблице объясняется каждый параметр в примере выше:
Параметры | Описание |
---|
name | Задает соединение, которое должно тестироваться с помощью этих тестовых сценариев |
connector | Задает проверку соединителя с помощью тестовых сценариев |
version | Задает версию соединения, которая должна тестироваться |
skipSchemaValidation | Задайте значение ИСТИНА, чтобы пропускать проверку ввода или вывода действия по схеме ввода или вывода |
logLevel | Задайте уровень журнала, который должен использоваться интерфейсом ConnectionAPI |
ConnectionAPI использует информацию, заданную в этом методе при вызове артефакта соединения.
Метод getTestInfo - возвращает информацию, заданную методом setTestInfo
Подпись: getTestInfo() - тип возврата (информация объекта)
Метод test
Этот метод выполняет указанный артефакт соединения и возвращает результат, возвращенный артефактом соединения соединителя.
Signature: test(Object input [optional], Object options [optional])
Тип возврата: объект Promise
◦ input [optional] - укажите объект входных данных, принимаемый артефактом соединения, который соответствует схеме JSON входных данных соединения
◦ options [optional] - укажите объект, содержащий некоторые или все свойства, определенные в элементе Object info (информация об объекте). Это значение свойств объекта опций переопределяет свойства, которые были заданы в объекте info на уровне набора тестов в методе setTestInfo.
Например, на уровне набора тестов задана информация для соединения connection1. Можно использовать этот объект опций для вызова метода тестирования, выполняющего connection2 соединителя вместо connection1, если передать свойство name : connection2. Это удобно, если 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, укажите наименование объекта OAuth, хранящееся в файле creds.json. |
skipSchemaValidation | Задайте значение ИСТИНА, чтобы пропускать проверку ввода или вывода действия по схеме ввода или вывода |
logLevel | Задайте уровень журнала, который должен использоваться интерфейсом LookupAPI |
Метод test
Метод выполняет указанный артефакт обзора и возвращает результат, возвращенный артефактом обзора соединителей.
Signature: test(String method, Object input [optional], Object options [optional])
Тип возврата: объект Promise
◦ method - укажите имя метода обзора, который должен тестироваться.
◦ input [optional] - укажите объект входных данных, принимаемый методом обзора.
◦ options [optional] - укажите объект, который содержит некоторые или все свойства, определенные в информации об объекте. Это значение свойств объекта опций переопределяет свойства, которые были заданы в объекте info на уровне набора тестов в методе setTestInfo.
Дополнительно можно указать следующие свойства для этого объекта.
searchById | Задает ИД, который нужно использовать для поиска |
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, укажите наименование объекта OAuth, хранящееся в файле creds.json. |
connection | Если для соединителя используется механизм аутентификации соединения, укажите наименование объекта соединения, хранящееся в файле creds.json. |
skipSchemaValidation | Задайте значение ИСТИНА, чтобы пропускать проверку ввода или вывода действия по схеме ввода или вывода. |
polling | Задайте значение "Истина", если тип триггера - это триггер опроса. |
logLevel | Задайте уровень журнала, который должен использоваться интерфейсом TriggerAPI |
Интерфейс TriggerAPI использует информацию, заданную в этом методе при вызове артефакта действия.
Метод getTestInfo - возвращает информацию, заданную методом setTestInfo
Подпись: getTestInfo() - тип возврата (информация объекта)
Метод test
Этот метод выполняет указанный артефакт триггера и возвращает результат, возвращенный артефактом триггера соединителя.
Signature: test(String method, String event, Object input [optional], Object options [optional])
Тип возврата: объект promise
◦ method - укажите имя метода триггера, который должен тестироваться.
◦ event - укажите событие триггера, определенное в схеме входных данных триггера.
◦ input [optional] - укажите объект входных данных, принимаемый методом триггера.
◦ options [optional] - укажите объект, содержащий некоторые или все свойства, определенные в элементе Object info (информация об объекте). Это значение свойств объекта опций переопределяет соответствующие свойства, которые были заданы в объекте info на уровне набора тестов в методе setTestInfo.
Дополнительно можно указать следующие свойства этого объекта для тестирования триггера опроса.
interval | Задает интервал в секундах, по истечении которого событие должно инициироваться. |
stopAfter | Определяет максимальное число вызовов триггера. |
meta | Задает мета-объект. |
unixTime | Система для описания момента времени, определенного как аппроксимация числа секунд |
Например, если нужно задать unixTime при тестировании триггера опроса, используйте приведенные выше опции.
CredsAPI
В этом файле используются следующие методы:
• getConnectionById - возвращает сведения о соединении в соответствии с указанным именем объекта соединения.
Сигнатура: getConnectionById(uid)
• getConnectionByIdWithHandle - возвращает сведения о соединении в объекте handle.
Сигнатура: getConnectionByIdWithHandle(uid)
• getOauthById - возвращает сведения об OAuth в соответствии с указанным именем объекта OAuth.
Сигнатура: getOauthById(uid)
• getOauthByIdWithHandle - возвращает сведения об OAuth в объекте handle.
Сигнатура: getOauthByIdWithHandle()
• saveConnection - сохраняет соединение.
Сигнатура: saveConnection()
• saveOauth - сохраняет сведения об OAuth в файле creds.json.
Сигнатура: saveOauth()
Интерфейс API ConnectorSyntaxTestHelper
Этот метод проверяет синтаксис артефактов соединителей.
Он может использоваться в тестах для единиц измерения следующим образом:
/* eslint-env mocha */
const ConnectorSyntaxTestHelperClass = require('ptc-flow-test-helper').ConnectorSyntaxTestHelper
const connector = require('../../index')
const ConnectorSyntaxTestHelper = new ConnectorSyntaxTestHelperClass(connector)
describe('usgeocoderConnectorSyntaxTest', ConnectorSyntaxTestHelper.tests())
Интерфейс API JSONUtils
Библиотека утверждений JSON
Функция compareJSONs (Object actualJSON, Object expectedJSON, Object ignoreDiff [необязателен]), тип возврата: promise; метод утверждения для сравнения объектов JSON. Возвращаемый объект типа Promise имеет значение "разрешен", если оба объекта JSON совпадают, иначе обещание отклоняется с сообщением об ошибке: ignoreDiff = { keys : [массив полей, которые нужно игнорировать при сравнении]}
verifyArraySubset (Object actualJSONArray, Object expectedJSONArray, Object ignoreDiff [необязателен]), тип возврата: promise
• Метод assertion для сравнения с целью установить, является ли actualJSONArray поднабором expectedJSONArray.
• Возвращаемый объект типа Promise имеет значение "разрешен", если actualJSONArray является поднабором expectedJSONArray, иначе обещание отклоняется с сообщением об ошибке
• ignoreDiff = { keys : [array of fields to be ignored from comparison]}