首页 > 解决方案 > 在 JS 中的 API 测试之间传输变量

问题描述

我有以下问题。我开始创建 e2e api 测试,第一个测试的目的是获取未经授权的用户令牌,第二个测试使用方法头中的第一个测试的值并为授权用户返回令牌 - 毕竟,第二个令牌将用于进一步的测试. 如何将令牌的值保存在变量中并通过测试?

我是 JS 新手,现在我收到“ReferenceError:auth_token 未定义”

const chai = require('chai');
const request = require('request-promise-native');
const mocha = require('mocha');
const config = require('../config');

const assert = chai.assert;
//const describe = mocha.describe;
//const it = mocha.it;
// request.debug = true;

describe('0_auth', () => {
  it('should return token for unauthorized user', async () => {
  const result = await request({
  headers: config.headers,
  url: `${config.url}/rest/v1/auth/get-token`,
  method: "POST",
  json: {
      "deviceUuidSource": "DEVICE",
      "source" : "KIOSK",
      "deviceUuid" : "uniquedeviceuuid"
  }
});
   assert.isNotNull(result);
   assert.property(result, 'token');
   var auth_token=result.token;
   console.log(auth_token)
   }).timeout(15000);


 it('should return token for authorized user', async () => {
 const result = await request({
  headers: Object.assign(config.headers, { 'Authorization': 'Bearer '+auth_token }),
  url: `${config.url}/rest/v1/auth/with-password`,
  method: "POST",
  json: {
    "email" : "dulexun3hvw0@10minut.xyz",
    "password" : "Test123"
     }
   });
   assert.isNotNull(result);
   assert.property(result, 'token');
   assert.property(result, 'user');
   console.log('token:', result.token);
 }).timeout(15000);
 });

在进一步的测试中,我想将 Bearer 令牌传递给不同类 config.js 中的 Authorization 字段

config.headers = {

 'User-Agent': 'WOR API Tester', // android
  Source: 'MOBILE',
 'Accept-Language': 'EN',
 Authorization:'Bearer '+auth_token;


};
module.exports = config;

标签: javascriptapitestingmocha.js

解决方案


好的,现在正在为下一次测试获取承载,但我有一个问题。为什么不记名保存在 auth_token 中的其他测试类而不是下面的类,这里我们有一行:

headers: Object.assign(config.headers, { 'Authorization': 'Bearer '+auth_token }),

在其他课程中,我只有以下行

headers: config.headers,

并且没有关于在授权中使用 auth_token 的信息,在 config.js 中也没有关于令牌的信息

const chai = require('chai');
const request = require('request-promise-native');
const mocha = require('mocha');
const config = require('../config');

const assert = chai.assert;
//const describe = mocha.describe;
//const it = mocha.it;
// request.debug = true;

describe('0_auth', () => {
  var auth_token = ''
  it('should return token for unauthorized user', async () => {

const result = await request({
  headers: config.headers,
  url: `${config.url}/rest/v1/auth/get-token`,
  method: "POST",
  json: {
      "deviceUuidSource": "DEVICE",
      "source" : "KIOSK",
      "deviceUuid" : "uniquedeviceuuid"
     }
   });
   assert.isNotNull(result);
   assert.property(result, 'token');
   auth_token=result.token;
}).timeout(15000);


 it('should return token for authorized user', async () => {
const result = await request({
  headers: Object.assign(config.headers, { 'Authorization': 'Bearer '+auth_token }),
  url: `${config.url}/rest/v1/auth/with-password`,
  method: "POST",
  json: {
    "email" : "dulexun3hvw0@10minut.xyz",
    "password" : "Test123"
     }
   });
assert.isNotNull(result);
assert.property(result, 'token');
assert.property(result, 'user');
 }).timeout(15000);
 });

推荐阅读