一、背景
考慮到公共腳本設(shè)置的環(huán)境變量,每次切換環(huán)境時(shí)要重新修改test,dev,pro的值;故寫個(gè)根據(jù)當(dāng)前環(huán)境自動(dòng)變化前置URL的值,來達(dá)到便捷的目的!
二、腳本更新部分,在頂部多加一條獲取當(dāng)前環(huán)境前置URL
// 獲取當(dāng)前環(huán)境前置URL
let host = pm.request.url.getHost()
var qzurl =host
// 定義發(fā)送登錄接口請(qǐng)求方法
function sendLoginRequest() {
? ? // 獲取環(huán)境里的 前置URL,+qzurl+拼接該變量
? ? pm.environment.set("BASE_URL", "https://"+qzurl+"/framework");
? ? const baseUrl = pm.environment.get("BASE_URL");
? ? console.log(baseUrl)
三、原始腳本部分
? ? // 登錄用戶名,這里從環(huán)境變量 LOGIN_USERNAME 獲取,也可以寫死(但是不建議)
? ? const username = pm.environment.get("YG_USERNAME");
? ? // 登錄用戶名,這里從環(huán)境變量 LOGIN_PASSWORD 獲取,也可以寫死(但是不建議)
? ? const password = pm.environment.get("YG_PASSWORD");
? ? // 構(gòu)造一個(gè) POST x-www-form-urlencoded 格式請(qǐng)求。這里需要改成你們實(shí)際登錄接口的請(qǐng)求參數(shù)。
? ? const loginRequest = {
? ? ? ? url: baseUrl + "/api/v1/users/login",
? ? ? ? method: "POST",
? ? ? ? // body 為 json 格式
? ? ? ? header: {
? ? ? ? ? ? "Content-Type": "application/json",
? ? ? ? ? ? "tenant": "lfc",
? ? ? ? ? ? // 注意:header 需要加上 Content-Type
? ? ? ? },
? ? ? ? body: {
? ? ? ? ? ? mode: 'raw',// 此處為 raw
? ? ? ? ? ? raw: JSON.stringify({ username: username, password: password }), // 序列化后的 json 字符串
? ? ? ? }
? ? };
? ? // 發(fā)送請(qǐng)求。
? ? // pm.sendrequest 參考文檔: https://www.apifox.cn/help/app/scripts/api-references/pm-reference/#pm-sendrequest
? ? pm.sendRequest(loginRequest, function (err, res) {
? ? ? ? if (err) {
? ? ? ? ? ? console.log(res);
? ? ? ? ? ? console.log(err);
? ? ? ? } else {
? ? ? ? ? ? // 讀取接口返回的 json 數(shù)據(jù)。
? ? ? ? ? ? // 如果你的 token 信息是存放在 cookie 的,可以使用 res.cookies.get('token') 方式獲取。
? ? ? ? ? ? // cookies 參考文檔:https://www.apifox.cn/help/app/scripts/api-references/pm-reference/#pm-cookies
? ? ? ? ? ? const jsonData = res.json();
? ? ? ? ? ? console.log(jsonData);
? ? ? ? ? ? // 將 accessToken 寫入環(huán)境變量 ACCESS_TOKEN
? ? ? ? ? ? pm.environment.set("YG_ACCESS_TOKEN", jsonData.data.accessToken);
? ? ? ? ? ? // // 將 accessTokenExpires 過期時(shí)間寫入環(huán)境變量 ACCESS_TOKEN_EXPIRES
? ? ? ? ? ? // pm.environment.set(
? ? ? ? ? ? // ? ? "ACCESS_TOKEN_EXPIRES",
? ? ? ? ? ? // ? ? jsonData.data.updateTime
? ? ? ? ? ? // );
? ? ? ? }
? ? });
}
// 獲取環(huán)境變量里的 ACCESS_TOKEN
const accessToken = pm.environment.get("YG_ACCESS_TOKEN");
// // 獲取環(huán)境變量里的 ACCESS_TOKEN_EXPIRES
// const accessTokenExpires = pm.environment.get("ACCESS_TOKEN_EXPIRES");
// 如 ACCESS_TOKEN 沒有值,或 ACCESS_TOKEN_EXPIRES 已過期,則執(zhí)行發(fā)送登錄接口請(qǐng)求
// if (
// ? ? !accessToken ||
// ? ? (new Date(accessTokenExpires) <= new Date())
// )
{sendLoginRequest();}