플러그인과 함께 newman으로 우편 배달부 컬렉션 실행(newman-reporter-htmlextra | pdf-export | pdf-parse)

16752 단어 newmanhtmlextrapostman

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.
  • 이렇게 하면 package.json 파일이 생성됩니다.

  • 2) newman 설치npm i newman --save-dev3) newman-reporter-htmlextranpm i newman-reporter-htmlextra --save-dev를 설치합니다.
    4) pdf-parse 설치npm i pdf-parse --save-dev5) 날짜 포맷터 설치npm i [email protected] --save-dev6) 루트 프로젝트에 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 .으로 스크립트 실행
  • 명령이 완료되면 테스트가 프로젝트 루트 내부의 현재 날짜 및 시간별로 새 폴더에 생성됩니다.
  • 일부 테스트가 실패하면 폴더에 pdf 파일이 표시되지 않습니다.




  • 나에 대한 질문이나 정보가 있으면 다음 qr 코드를 스캔하거나 클릭하여 연락할 수 있습니다.

    좋은 웹페이지 즐겨찾기