기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
IDT 컨텍스트 사용
IDT가 테스트 도구 모음을 실행할 때, 테스트 도구 모음은 각 테스트 실행 방식을 결정하는 데 사용할 수 있는 데이터 세트에 액세스할 수 있습니다. 이 데이터를 IDT 컨텍스트라고 합니다. 예를 들어 테스트 러너가 userdata.json
파일로 제공한 사용자 데이터 구성은 IDT 컨텍스트의 테스트 도구 모음에서 사용할 수 있도록 만들어졌습니다.
IDT 컨텍스트는 읽기 전용 JSON 문서로 간주할 수 있습니다. 테스트 도구 모음은 객체, 배열, 숫자 등과 같은 표준 JSON 데이터 유형을 사용하여 컨텍스트에서 데이터를 검색하고, 컨텍스트에 데이터를 쓸 수 있습니다.
컨텍스트 스키마
IDT 컨텍스트는 다음 형식을 사용합니다.
{ "config": { <config-json-content> "timeoutMultiplier": timeout-multiplier }, "device": { <device-json-device-element> }, "devicePool": { <device-json-pool-element> }, "resource": { "devices": [ { <resource-json-device-element> "name": "<resource-name>" } ] }, "testData": { "awsCredentials": { "awsAccessKeyId": "<access-key-id>", "awsSecretAccessKey": "<secret-access-key>", "awsSessionToken": "<session-token>" }, "logFilePath": "/path/to/log/file" }, "userData": { <userdata-json-content> } }
config
-
config.json 파일의 정보.
config
필드에는 다음과 같은 추가 필드도 포함됩니다.config.timeoutMultiplier
-
테스트 도구 모음에서 사용하는 모든 시간 제한 값의 승수입니다. 이 값은 IDT CLI에서 테스트 러너에 의해 지정됩니다. 기본값은
1
입니다.
device
-
테스트 실행을 위해 선택한 장치에 대한 정보. 이 정보는 선택한 장치의 device.json 파일에 있는
devices
배열 요소와 동일합니다. devicePool
-
테스트 실행을 위해 선택한 장치 풀에 대한 정보. 이 정보는 선택한 장치 풀에 대해
device.json
파일에 정의된 최상위 장치 풀 배열 요소와 동일합니다. resource
-
resource.json
파일의 리소스 장치에 대한 정보.resource.devices
-
이 정보는
resource.json
파일에 정의된devices
배열과 동일합니다. 각devices
요소에는 다음과 같은 추가 필드가 포함됩니다.resource.device.name
-
리소스 장치의 이름입니다. 이 값은
test.json
파일의requiredResource.name
값으로 설정됩니다.
testData.awsCredentials
-
테스트에서 AWS 클라우드에 연결하는 데 사용하는 AWS 보안 인증입니다. 이 정보는
config.json
파일에서 가져옵니다. testData.logFilePath
-
테스트 사례가 로그 메시지를 기록하는 로그 파일의 경로입니다. 이 파일이 존재하지 않는 경우 테스트 도구 모음에서 해당 파일을 생성합니다.
userData
-
테스트 러너가 userdata.json 파일에서 제공한 정보.
컨텍스트에서 데이터 액세스
JSON 파일 및 GetContextValue
및 GetContextString
API로 실행 가능한 텍스트 파일에서 JSONPath 표기법을 사용하여 컨텍스트를 쿼리할 수 있습니다. IDT 컨텍스트에 액세스하기 위한 JSONPath 문자열의 구문은 다음과 같이 다양합니다.
-
suite.json
와(과)test.json
에서는{{
을(를) 사용합니다. 즉, 루트 요소query
}}$.
을(를) 사용하여 표현식을 시작하지 마십시오. -
test_orchestrator.yaml
에서는{{
을(를) 사용합니다.query
}}더 이상 사용되지 않는 상태 시스템을 사용하는 경우
state_machine.json
에서{{$.
를 사용합니다.query
}} -
API 명령에서는 명령에 따라
또는query
{{$.
을(를) 사용합니다. 자세한 내용을 알아보려면 SDK에서 인라인 설명서를 참조하세요.query
}}
다음 표에서는 일반적인 JSONPath 표현식의 연산자를 설명합니다.
Operator | Description |
---|---|
$ |
The root element. Because the top-level context
value for IDT is an object, you will typically use $. to
start your queries. |
.childName |
Accesses the child element with name
childName from an object. If applied to an array,
yields a new array with this operator applied to each element. The
element name is case sensitive. For example, the query to access the
awsRegion value in the config object is
$.config.awsRegion . |
[start:end] |
Filters elements from an array, retrieving items
beginning from the 시작 index and going up to the
end index, both inclusive. |
[index1, index2, ... , indexN] |
Filters elements from an array, retrieving items from only the specified indices. |
[?(expr)] |
Filters elements from an array using the
expr expression. This expression must evaluate to a
boolean value. |
필터 표현식을 만들려면 다음 구문을 사용하십시오.
<jsonpath>
|<value>
operator
<jsonpath>
|<value>
이 구문에서:
-
jsonpath
은(는) 표준 JSON 구문을 사용하는 JSONPath입니다. -
value
은(는) 표준 JSON 구문을 사용하는 모든 사용자 지정 값입니다. -
operator
는 다음 작업 중 하나를 호출합니다.-
<
(미만) -
<=
(이하) -
==
(같음)표현식의 JSONPath 또는 값이 배열, 부울 또는 객체 값인 경우 이것이 사용할 수 있는 유일하게 지원되는 바이너리 연산자입니다.
-
>=
(이상) -
>
(초과) -
=~
(정규 표현식 일치). 필터 표현식에서 이 연산자를 사용하려면 표현식 왼쪽의 JSONPath 또는 값이 문자열로 평가되어야 하고, 오른쪽은 RE2 구문을 따르는 패턴 값이어야 합니다.
-
{{query
}} 형식의 JSONPath 쿼리를 test.json
파일의 args
및 environmentVariables
필드, suite.json
파일의 environmentVariables
필드 내에서 자리 표시자 문자열로 사용할 수 있습니다. IDT는 컨텍스트 조회를 수행하고 쿼리의 평가된 값으로 필드를 채웁니다. 예를 들어 suite.json
파일에서 자리 표시자 문자열을 사용하여 각 테스트 사례에 따라 변경되는 환경 변수 값을 지정할 수 있으며, IDT는 환경 변수를 각 테스트 사례에 맞는 값으로 채웁니다. 하지만 test.json
및 suite.json
파일에서 자리 표시자 문자열을 사용하는 경우 쿼리에 다음 사항을 고려해야 합니다.
-
쿼리에서 나타나는
devicePool
키는 모두 소문자로 입력해야 합니다. 즉,devicepool
을(를) 대신 사용하십시오. -
배열의 경우 문자열 배열만 사용할 수 있습니다. 또한 배열은 비표준
item1, item2,...,itemN
형식을 사용합니다. 배열에 요소가 하나만 포함된 경우 이 배열은item
(으)로 직렬화되어 문자열 필드와 구분할 수 없게 됩니다. -
자리 표시자를 사용하여 컨텍스트에서 객체를 검색할 수 없습니다.
이러한 고려 사항 때문에 가능하면 test.json
및 suite.json
파일의 자리 표시자 문자열 대신 API를 사용하여 테스트 로직의 컨텍스트에 액세스하는 것이 좋습니다. 하지만 경우에 따라 JSONPath 자리 표시자를 사용하여 단일 문자열을 가져와서 환경 변수로 설정하는 것이 더 편리할 수 있습니다.