2023/09/23

Postman Interrupt Request By Environment-detecting

使用 postman 製作 API 測試時,有些案例可能不應該在 production 的情況執行,例如新增或修改一些會影響正式主機使用者的資料,但 postman 本身並沒有可以設定那些 API 在指定的環境時不可執行或者是警告執行,我們可以透過 Pre-request Script 撰寫 function 在 Collection 的層級,在各個 request 內放入限制。

Collection Pre-request Script

avoidExecuteFrom = (environment) => {
    const checkEnvironment = (value) => {
        if (pm.environment.name.includes(value)) {
            throw new Error(`forbidden in ${value}`)
        }
    };

    if (typeof environment === 'string') {
        checkEnvironment(environment);
    }

    if (Array.isArray(environment)) {
        environment.forEach(checkEnvironment);
    }
};

Request Pre-request Script

avoidExecuteFrom('staging');
avoidExecuteFrom(['production', 'staging'])

我的專案 environment 有三個配置,case-devcase-stagingcase-productionpm.environment.name 可以拿到 environment name,送出前偵測是否我們要避免執行的環境文字有包含在內,有的話便禁止送出。