플러그인과 함께 newman으로 우편 배달부 컬렉션 실행(newman-reporter-htmlextra | pdf-export | pdf-parse)
This guide is for running a collection of api tests, generating html report of results and generating pdf file from the API body response (the pdfData) from base64 encoded string.
이 튜토리얼에서 다루는 내용:
1) newman으로 포스트맨 콜렉션을 실행합니다.
2) newman을 사용한 사용자 정의 환경 위치.
3) 테스트 결과 보고서를 내보낼 사용자 지정 템플릿 위치가 있는 Reporter-htmlextra.
4) PDF 내보내기 - 이진 인코딩된 pdf 문자열에 대한 응답 개체 검색을 가져오고, 디코딩된 pdf 파일을 생성하고 현재 날짜까지 새로 생성된 폴더에 report.html 파일과 함께 배치합니다.
5) PDF 구문 분석 - 생성된 PDF 파일 - 액세스하여 해당 PDF에서 특정 메타데이터 또는 사용자 지정 텍스트 콘텐츠 또는 문자열을 검색합니다.
지금 시작할 수 있습니다: 👀
이미 우편 배달부 요청 모음이 있고 다음 단계는 다음 단계가 필요한 특정 디렉터리에 해당 collection.json 파일을 내보내는 것이라고 가정해 보겠습니다.
요구 사항:
1) Postman 애플리케이션 설치(컬렉션 내보내기용)
2) 설치된 NodeJ( https://nodejs.org/en/download/ )
설정:
1) PC에서 로컬 경로를 설정하고 프로젝트 디렉토리 내부에서 터미널/cmd를 열고 명령을 실행합니다
npm init
.2) newman 설치
npm i newman --save-dev
3) newman-reporter-htmlextranpm i newman-reporter-htmlextra --save-dev
를 설치합니다.4) pdf-parse 설치
npm i pdf-parse --save-dev
5) 날짜 포맷터 설치npm i [email protected] --save-dev
6) 루트 프로젝트에 index.js 파일을 생성하고 코드를 채워봅시다.const dateFormat = require('./node_modules/dateformat/lib/dateformat.js');
const fs = require('fs');
const now = new Date();
const currentData = dateFormat(now, "dd.mm.yyyy HH.MM");
const newman = require('newman');
// add the path to your exported postman collection
const collection = require('./Newman.postman_collection.json');
const reportName = 'report.html';
newman.run({
collection,
// if you use environments from different json file excluded from the postman collection, otherwise comment it
environment: `./environment/dev.json`,
reporters: ['cli', 'htmlextra'],
iterationCount: 1,
reporter: {
htmlextra: {
// commented lines are the all possibilities available to be set for the report document
export: `./${currentData}/${reportName}`,
/*
this is the original location of the template but can be copied modified, moved and linked to it
if you don't specify template path will use the default one ./node_modules/newman-reporter-htmlextra/lib/dashboard-template.hbs
*/
template: './node_modules/newman-reporter-htmlextra/lib/dashboard-template.hbs',
// logs: true,
// showOnlyFails: true,
// noSyntaxHighlighting: true,
// testPaging: true,
browserTitle: "Newman report",
title: 'Report - ' + currentData,
titleSize: 5,
// omitHeaders: true,
// skipHeaders: "Authorization",
// omitRequestBodies: true,
// omitResponseBodies: true,
// hideRequestBody: ["Login"],
// hideResponseBody: ["Auth Request"],
showEnvironmentData: true,
// skipEnvironmentVars: ["API_KEY"],
// showGlobalData: true,
// skipGlobalVars: ["API_TOKEN"],
// skipSensitiveData: true,
// showMarkdownLinks: true,
showFolderDescription: true,
// timezone: "Australia/Sydney",
// skipFolders: "folder name with space,folderWithoutSpace",
// skipRequests: "request name with space,requestNameWithoutSpace",
// displayProgressBar: true
}
}
}).on('request', (error, data) => {
const requestName = data.item.name;
const fileName = `${requestName}.pdf`;
let content = data.response.stream.toString();
/* You need to modify this in order to get the specific
data of encoded string from your API response */
let pdfEncodedString = JSON.parse(content).pdfData;
if (error) {
console.log(error);
return;
}
if (JSON.parse(content).message === 'Forbidden') {
console.log('There has been error. Get renewed access token!');
return;
}
if (pdfEncodedString !== undefined) {
if (!fs.existsSync(currentData)) fs.mkdirSync(currentData, { recursive: true });
fs.writeFile(currentData + '/' + fileName, pdfEncodedString, 'base64', function (error) {
if (error) {
console.error(error);
} else {
const pdf = require('pdf-parse');
let dataBuffer = fs.readFileSync(currentData + '/' + fileName);
pdf(dataBuffer).then(function (data) {
/* number of pages
console.log(data.numpages);
//number of rendered pages
console.log(data.numrender);
//PDF info
console.log(data.info);
//PDF metadata
console.log(data.metadata);
//PDF.js version
check https://mozilla.github.io/pdf.js/getting_started/
console.log(data.version); PDF text console.log(data.text);
*/
console.log('Content: ', data.text);
console.log('Specific word: ', data.text.includes('some_text_you_want_to_find')); // you can use any js logic here or regex
console.log('number of pages:', data.numpages);
console.log('number of rendered pages:', data.numrender);
console.log(data.info);
});
}
});
} else {
console.log('Pdf encoded string not found in the body response')
}
});
7) 프로젝트 루트의 터미널 창 내에서 명령
node .
으로 스크립트 실행나에 대한 질문이나 정보가 있으면 다음 qr 코드를 스캔하거나 클릭하여 연락할 수 있습니다.
Reference
이 문제에 관하여(플러그인과 함께 newman으로 우편 배달부 컬렉션 실행(newman-reporter-htmlextra | pdf-export | pdf-parse)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kiril6/running-a-postman-collection-with-newman-alongside-plugins-newman-reporter-htmlextra-pdf-export-pdf-parse-211l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)