Хранение глобальной переменной в отдельном файле для испытаний транспортира

1

Я пытаюсь создать отдельный файл инвентаризации для Protractor Test, где я могу сохранить все переменные многократного использования, которые будут использоваться различными тестовыми скриптами. Пример списка переменных называется Vars.js, и спецификации должны импортировать переменные из этого файла и использовать их. Однако это не так, как показано ниже. Может ли этот подход действительно использоваться для хранения многократно используемых переменных? Могу ли я на самом деле создать отдельный файл инвентаря для испытаний транспортира за пределами conf.js?

Vars.js имеет следующий контент:

"use strict";

exports.config = {

function() {

    global.loginMain = 'https://mytestsite.com/auth/login';
    global.TestText = 'I am the test Text';

}
};

и файл спецификации выглядит следующим образом:

require ('./Vars.js')
require('..\\waitAbsent.js')
require("../node_modules/jasmine-expect/index.js")
describe('Vairables Import Test', function() {

console.log(global.loginMain);
console.log(global.TestText);

browser.get(global.loginMain);

it('Text Validation', function(){

expect(browser.getCurrentUrl()).toEqual('https://mytestsite.com/auth/login')


})

});

Журнал

    [10:55:29] I/local - Selenium standalone server started at http://192.168.1.187:51256/wd/hub
undefined
undefined
Started
(node:17800) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods
instead.
F

Failures:
1) Vairables Import Test encountered a declaration exception
  Message:
    TypeError [ERR_INVALID_ARG_TYPE]: The "url" argument must be of type string. Received type undefined
  Stack:
    TypeError [ERR_INVALID_ARG_TYPE]: The "url" argument must be of type string. Received type undefined
        at Url.parse (url.js:152:11)
        at urlParse (url.js:146:13)
        at Url.resolve (url.js:661:29)
        at Object.urlResolve [as resolve] (url.js:657:40)
        at ProtractorBrowser.get (C:\FCPS_I\FCPS\node_modules\protractor\built\browser.js:653:17)
        at Suite.<anonymous> (C:\FCPS_I\FCPS\TestBed_Scripts\TestBed.js:10:13)
        at Object.<anonymous> (C:\FCPS_I\FCPS\TestBed_Scripts\TestBed.js:5:1)

1 spec, 1 failure

Обновление: пересмотренный Vars.js, где я использовал params, как показано ниже, также возвращает тот же сбой.

"use strict";

exports.config = {

params: {

    loginMain: 'https://dss-esy.insystechinc.com/auth/login',
    TestText : 'I am the test Text',

}
};
Теги:
karma-jasmine
protractor

1 ответ

2
Лучший ответ

Приведенный ниже подход должен работать для вас.

conf.js

exports.config = {
  framework: 'jasmine',
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['app.js'],
  onPrepare: async() => {
      global.globalVariables = require('./globalVariables');
  }
};

app.js

describe('desribe the test', () => {
  it('the it', async () => {
      console.log(globalVariables.loginMain);
      console.log(globalVariables.TestText);
  })
})

globalVariables.js

module.exports = {
  loginMain :'https://mytestsite.com/auth/login',
  TestText : 'I am the test Text'
}
  • 1
    Большое спасибо. Это идеальное решение, которое мы искали.
  • 0
    Рад был помочь. Я просто хочу указать, что используемая там функция onPrepare не обязательно должна быть асинхронной, чтобы ее можно было заменить на обычную функцию.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню