Я использую WebdriverIO для автоматизации тестирования. В файле wdio.conf.js
я настроил свойство baseUrl.
Я хочу прочитать значение свойства baseUrl в моем тестовом .js
файле. Как я могу это сделать?
Я использую WebdriverIO для автоматизации тестирования. В файле wdio.conf.js
я настроил свойство baseUrl.
Я хочу прочитать значение свойства baseUrl в моем тестовом .js
файле. Как я могу это сделать?
❒ wdio-v5
В последнее время, после написания множества тестов для переписывания проекта, я пришел к выводу, что лучший способ хранить / получать доступ к глобальным переменным конфигурации - через объект global
.
Вы можете определить их внутри файловых ловушек wdio.conf.js
. Я определил свой в хуке before
:
before: function (capabilities, specs) {
// =================
// Assertion Library
// =================
const chai = require('chai');
global.expect = chai.expect;
global.assert = chai.assert;
global.should = chai.should();
// ======================
// Miscellaneous Packages
// ======================
global.langCode = langCode;
global.countryCode = countryCode;
global.request = require('superagent');
global.allowedStatusCodes = [200, 301],
// ===============
// Custom Commands
// ===============
require('./test/custom_commands/aFancyMethod');
require('./test/custom_commands/anotherOne');
require('./test/custom_commands/andAnotherOne');
},
Затем вы можете получить к ним доступ напрямую, где угодно в ваших тестовых файлах или объектах страницы. Таким образом, вы значительно уменьшите размер тестового файла (errr ... codeprint), потому что вы можете вызывать их непосредственно в своем тестовом примере:
describe(`Testing a random URL`, () => {
it('Should return a HTTP valid status code', async () => {
// Issue a HTTP request for the given URL:
await request
.head('https://random.org')
.then(res => {
console.info(`\n> Status code found: ${res.status} | MIME type found: '${res.type}'\n`);
foundStatusCode = res.status;
})
.catch(err => {
console.info(`\n> Status code found: ${err.status} | Error response found: '${JSON.stringify(err.response)}'\n`);
foundStatusCode = err.status;
});
// Assert the HTTP Status Code:
assert.include(allowedStatusCodes, foundStatusCode, `!AssertError: Route yields a bad status code! Got: ${foundStatusCode} | Expected: ${allowedStatusCodes}`);
});
В отличие от того, чтобы всегда делать await browser.options.request.head(...
, browser.options.baseUrl
и т. Д.
❒ wdio-v4
Все атрибуты файла wdio.conf.js
(в основном пары имя-значение объекта config
) также хранятся внутри объекта browser.options
.
Таким образом, более элегантный подход к доступу к вашим глобальным значениям конфигурации изнутри ваших тестов будет представлен ниже:
> browser.options
{ port: 4444,
protocol: 'http',
waitforTimeout: 10000,
waitforInterval: 500,
coloredLogs: true,
deprecationWarnings: false,
logLevel: 'verbose',
baseUrl: 'http://localhost',
// ... etc ...
}
> browser.options.baseUrl
'http://localhost'
Здесь я рискну и предположу, что вы хотите прочитать значение baseUrl
из своего wdio.config.js
файла в свой test.js
файл.
TL; DR: в заголовок test.js
файла добавьте следующее:
var config = require('<pathToWdioConfJS>/wdio.conf.js').config;
Затем вы можете получить доступ к любому значению wdio.config.js
через config.<configOption>
, в вашем случае config.baseUrl
.
Наконец, я настоятельно рекомендую вам прочитать о экспорт и экспорт модулей.
WebdriverIO построен на NodeJS, поэтому вы в конечном итоге выстрелите себе в ногу, если не знаете, как и когда использовать exports
, module.exports
, require
или разницу между ними.
Используйте browser.options.baseUrl. Если вы используете require, вы жестко кодируете этот файл, и это нормально, но вы не можете выполнить wdio --baseUrl = http://myTestSite2.net, чтобы переопределить "глобальный" baseUrl. Что вы, возможно, захотите сделать в нескольких развертываниях в будущем.
В файле wdio.config.js укажите такой URL-адрес
var baseUrl = 'YOUR URL'
exports.config = {
baseUrl: baseUrl,
}
В тестовом файле используйте /
вместо добавления полного URL в browser.url('/')
, он будет использовать baseUrl из файла wdio.config.js.
browser.url('/')
BaseUrl доступен в объекте конфигурации browser.config.baseUrl См. https://github.com/webdriverio/webdriverio/blob/a4a5a46f786f8548361d7f86834b38f89dcb1690/packages/webdriverio/webdriverio/webdriverio.driverio/
просто сохраните все свои переменные в before: function, и их можно будет использовать в любом месте вашего теста. как в следующем примере, я использую файл конфигурации wdio счетчика повторов
before: function (capabilities, specs) {
expect = require('chai').expect;
should = require('chai').should();
assert = require('assert');
retryCount=2;
browser.maximizeWindow();
wdio.config.js
файла или изtest.js
? Вы написали это так небрежно, что я не могу сказать, что вам нужно. Пожалуйста, отредактируйте свой вопрос и будьте более конкретными. - person iamdanchiv   schedule 15.06.2017