關閉

                  Postman全局注冊方法及對返回數據可視化處理

                  發表于:2023-3-20 09:22

                  字體: | 上一篇 | 下一篇 | 我要投稿

                   作者:River_WJ    來源:稀土掘金

                    1.全局方法注冊及使用
                    1.1 注冊
                    在collection最外層中Pre-request Script中編寫全局方法:
                    // 開發者本機ip
                    const globalDevIp = 'http://172.16.65.46:9191'
                    // 全局變量
                    pm.globals.set("variable_key", "variable_value");
                    var moment = require('moment');
                    var date = new Date();
                    date = moment(date).format("YYYY-MM-DD HH:mm:ss");
                    var transNo = moment(date).format("YYYYMMDDHHmmss");
                    pm.environment.set("req_time", date);
                    pm.environment.set("transNo", transNo);
                    pm.environment.set('globalDevIp', globalDevIp)
                    // 注冊全局方法
                    pm.globals.set('loadUtils', function loadUtils() {
                        let utils = {
                            // 獲取個人編號-依賴于HT000-獲取個人/企業數據(先執行HT000)
                            getPerson: (name) => {
                                try {
                                    let globalPerson = pm.environment.get('globalPerson');
                                    if (globalPerson && globalPerson.length == 32) {
                                        return globalPerson
                                    }
                                    let tempObj = pm.environment.get('psersonAccountMap');
                                    if (typeof tempObj == 'object') {
                                        return tempObj[name || globalPerson].id
                                    } else {
                                        throw(new Error('在全局配置的HT000中,設置全局個人編號'))
                                    }
                                } catch(e) {
                                    const errorMsg = '獲取全局個人編號失敗,' + (e.message || e)
                                    console.error(errorMsg)
                                    throw(new Error(errorMsg))
                                }
                            },
                            // 設置bizContent和sign簽名
                            setBizContent: (biz_content) => {
                                ...
                            },
                            // 可視化結果
                            devRedirectUrl(url) {
                                if (!url && !url.includes('?')) return
                                const ip = pm.environment.get('globalDevIp')|| pm.environment.get('api_url_prefix')
                                const temp = url.split('?')[1].replace('&timestamp', '&timestamp')
                                const redirectUrlWebs = ip + '/#/webs?'+ temp
                                const redirectUrlApp = ip + '/#/app?'+ temp
                                /* ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓【開發專用--重定向】↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ */
                                
                                pm.visualizer.set(`
                                <div style="width: 100vw; height: 100vh; font-family: monospace; color:blue; word-bread: pre-wrap; ">
                                    <textarea style="width: 100vw; height: 30%; " readonly>${redirectUrlWebs}</textarea>
                                    <textarea style="width: 100vw; height: 30%; " readonly>${redirectUrlApp}</textarea>
                                </div>
                                `)
                                /* ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑【開發專用--重定向】↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ */
                            }
                        };
                        return utils;
                    } + '; loadUtils();');
                    console.log('全局方法已經注冊')
                    1.2全局方法使用
                    在業務請求中的Pre-request Script引入方法, 如:
                    const utils = eval(globals.loadUtils); // 全局方法引入
                    // 獲取默認個人ID;不傳參,取默認值,可傳參:utils.getPerson('賬號') 
                    let personSignerId = utils.getPerson()
                    2. 可視化
                    以下內容是工作中碰到的一個繁瑣操作,訪問接口后,返回結果的帶域名地址替換本機ip,然后瀏覽器打開替換后的地址→進行調試。
                    PS: 手動修改雖然步驟不多,但每次都要去修改,作為一名合格的懶人,想著對結果進行二次修改后進行展示。對返回結果進行二次處理后,并可視化,方便復制。
                    另:其實還有更進一步的想法,就是調用接口后,對數據二次處理后,通過postman軟件直接打開chrome瀏覽器訪問目標地址。但目前沒有找到該實現方法,有大佬知道的可以指導一下。
                    可視化操作如下:
                    在業務請求的Tests中,編寫方法或者全局方法注冊。
                    const redirectUrlApp = JSON.parse(responseBody)
                    pm.visualizer.set(`
                    <div style="width: 100vw; height: 100vh; font-family: monospace; color:blue; word-bread: pre-wrap; ">
                        <textarea style="width: 100vw; height: 30%; " readonly>${redirectUrlApp}</textarea>
                    </div>
                    `)
                    或者
                    let template = `
                      <div>
                        <h3>name:{{response.name}}</h3><br>
                        <h3>partition:{{response.partition}}</h3>
                      </div>
                    `;
                    pm.visualizer.set(template, {
                        response: JSON.parse(responseBody)
                    });
                    頁面展示在Body下的Visualize,在可視化窗口中,很方便就能全選復制地址。
                    本文內容不用于商業目的,如涉及知識產權問題,請權利人聯系51Testing小編(021-64471599-8017),我們將立即處理
                  《2023軟件測試行業現狀調查報告》獨家發布~

                  關注51Testing

                  聯系我們

                  快捷面板 站點地圖 聯系我們 廣告服務 關于我們 站長統計 發展歷程

                  法律顧問:上海蘭迪律師事務所 項棋律師
                  版權所有 上海博為峰軟件技術股份有限公司 Copyright©51testing.com 2003-2024
                  投訴及意見反饋:webmaster@51testing.com; 業務聯系:service@51testing.com 021-64471599-8017

                  滬ICP備05003035號

                  滬公網安備 31010102002173號

                  亚洲欧洲自拍图片专区123_久久久精品人妻无码专区不卡_青青精品视频国产色天使_A免看的日黄亚洲