全部 ApiPost使用 后端 前端 接口测试 IOS Android 数据库 2022 测试技术 工具
问答 / 问答详情

预执行脚本无法设置环境变量

预执行脚本无法设置环境变量

const env = {
    "host": apt.variables.get("host"),
    "token": apt.variables.get("token"),
    "auth_key": apt.variables.get("auth_key")
}

if (!env.token || !env.auth_key) {
    $.ajax({
        "url": env.host + '/token/get',
        "method": "POST",
        "headers": {
            "X-Requested-With": "XMLHttpRequest",
            "content-type": "application/json"
        },
        "timeout": "10000",
        "async": false,
        "data": JSON.stringify({ "username": "xxxx", "password": "xxxx" }),
        "success": function (response) {
            console.log("successfly");
            apt.variables.set("token", response.data.token);
            apt.variables.set('auth_key', response.data.auth_key);
            console.log("token: %s", apt.variables.get("token"));
        },
        "error": function(xhr, status, error){
            console.log(error);
            console.log(xhr);
        }
    });
}

经过尝试,在success:function中执行以下的代码,均无法设置任何变量,打开查看环境变量界面完全看不到设置上去的变量。

apt.variables.set("token", 1234);
apt.globals.set("token", 1234);
apt.environment.set("token", 1234);

预执行脚本无法设置环境变量

但是把代码旋转到success:function之外,放在$.ajax之外,执行就正常,能设置变量,能在查看器中查看到。

而且就算添加 async: false,请求依旧是异步的。

以上的代码在,apipost 6上没有问题,在apipost 7上从来没有执行成功过。请问题这个问题要怎么解决?

| 0 收藏
  • yagas
  • 2022-10-20 提问

2 个回答

ajax前面加await即可

await $.ajax



果然添加了await 问题就解决了

  • yagas
  • 2022-10-20 回答
Apipost 私有化火热进行中

撰写答案

只服务于

前后端、移动端、测试人员

提问题 发布您遇到的Bug和问题,上万名大牛和开发者来帮您解决!