Portman을 사용한 API 테스트 향상
Portman에는 시작 및 실행에 필요한 설정을 단순화하는 CLI가 있습니다.이 문서에서 우리는 Portman을 설정하고 간단한 테스트를 진행할 것이다. 이런 테스트는 우리가 API를 대상으로 실행하고자 하는 것이다.
OpenAPI 파일로만 생성되므로 How to build a serverless API in AWS without using a single Lambda에 생성된 API를 사용합니다.본문의 설명에 따라 배치하고 배치가 완료되었을 때 출력된 URL을 기록합니다.
Here's a link to GitHub repo
따라가는 경우 클론/다운로드 확인this commit
1. 포터만 설치
Portman CLI를 사용하려면 먼저
npm install -g portman
2. 포터만 초기화
이제 설치가 완료되었으므로 CLI를 사용하여 초기 설정을 쉽게 준비할 수 있습니다.
portman --init
이것은 모든 것이 설정되어 있는지 확인하기 위해 우리에게 몇 가지 일을 하도록 제시할 것이다.다음은 내가 그것을 설치하기 위해 한 모든 선택을 볼 수 있다.3. 기본 구성 추가
초기화 과정에서, 우리는 자신의 사용자 정의 설정을 사용하기로 선택했다.우선, 기본 설정 from here 을portman 설정에 복사합니다.portman 디렉터리에 있는 json 파일입니다.
기본 프로필은 계약 테스트만 정의합니다. 이 테스트는 모든 단점이 성공 상태(2XX)로 돌아가고 내용 유형은 OpenAPI에 정의된 상태로 돌아가며 응답은 JSON 본문이 있고 응답 본문은 OpenAPI에 정의된 내용과 일치합니다.
4. 포터만 달리기
이제 모든 것이 설정되었습니다. 설정이 끝날 때 지정한 명령을 사용하여portman을 실행할 수 있습니다.
portman --cliOptionsFile portman/portman-cli.json
5. OpenAPI 사양에서 발견된 문제 해결
오류 #1 - URL이 없습니다.
현재 명령이 실행되면 OpenAPI의 첫 번째 문제가 표시됩니다.터미널의 오류를 보면 호출하려는 URL은 OpenAPI 사양에 정의된 경로만 표시됩니다.
이는 Portman이 OpenAPI의 server and base URL 섹션을 사용하여 요청을 수행하기 때문입니다.이 문제를 해결하기 위해서, 우리는 제품 오픈api로 넘어갈 것입니다.yaml 파일, 그리고 서버 부분을 이 파일에 추가합니다. URL에 대해서는 우리가 시작할 때 가져온 제품 API를 사용합니다.
최종 결과는 다음과 같아야 한다.
오류 #2 - 응답 아키텍처 불일치
포트맨을 다시 실행할 때 다음과 같은 오류가 발생했습니다.
이것은
GET /products
요청이 OpenAPI에 정의된 예상 형식으로 되돌아오지 않았음을 알려 줍니다.OpenAPI를 살펴보면 응답 모드를 제품군으로 정의합니다.
[
{
}
]
응답 템플릿의 작업과 비교할 때, 이것은 제품스 그룹이 있는 대상을 되돌려줍니다. 이 그룹은 다음과 같습니다.{
"products": [
]
}
이 문제를 해결하기 위해서 응답 템플릿에서 제품 속성을 삭제하고 그룹을 간단하게 되돌려줍니다.응답 템플릿은 다음과 같습니다.
이 점을 확인하기 위해서, 우리는 서비스를 재배치해야 한다. 서비스가 배치가 끝난 후에, 우리는Portman을 다시 운행하게 되면, 우리는 현재 모든 것이 성공적으로 운행되고 있음을 보게 될 것이다.
5. 변수 할당 및 무시
요청-응답의 값을 사용할 수 있도록portman 프로필의 assignVariables 부분을 사용하여 이 동작을 수행할 노드와 변수에 저장할 변수를 지정할 수 있습니다.
이 예에서, 우리는 모든 다른 요청에서
POST products
요청이 되돌아오는 id를 사용하기를 희망합니다.이를 실현하기 위해 저희 assignVariables 부분은 다음과 같습니다.{
"assignVariables": [
{
"openApiOperation": "POST::/products",
"collectionVariables": [
{
"name": "newProductId",
"responseBodyProp": "id"
}
]
}
]
}
무슨 뜻인지 한번 봅시다. {
"overwrites": [
{
"openApiOperation": "*::/products/{productId}",
"overwriteRequestPathVariables": [
{
"key": "productId",
"value": "{{newProductId}}",
"overwrite": true
}
]
}
]
}
이것도 맞춰달래요.만약 우리가 모든 다른 요청을 본다면, 그들은 같은 제품 id를 사용할 것입니다. 왜냐하면 우리는 어댑터를 사용하여 덮어쓰기를 지정했기 때문입니다.
마무리
기존 OpenAPI 정의를 사용하여 계약 테스트를 설정하는 것이 얼마나 간단한지 잘 알고 있습니다.곧 EMC API와 저희가 정의한 API 사이의 차이를 발견할 수 있습니다.
이러한 유형의 테스트는 API에 대한 신뢰를 심어주고 문서를 쉽게 업데이트하는 데 도움이 됩니다.
본고는 기본적인 내용만 소개하지만 대부분의 장면을 포괄하기 위해 포트맨을 사용하여 더 많은 작업을 할 수 있습니다.
Reference
이 문제에 관하여(Portman을 사용한 API 테스트 향상), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/aws-builders/get-better-api-testing-by-using-portman-2n4a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Portman을 사용한 API 테스트 향상), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws-builders/get-better-api-testing-by-using-portman-2n4a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)