#javascript #node.js #jasmine #protractor #saucelabs
Вопрос:
У меня есть несколько сценариев автоматизации, настроенных с помощью NodeJS, транспортира, фреймворка Jasmine и SauceLabs.
Каждый сценарий находится в отдельных файлах .JS и считывает данные из файлов .JSON. Я определил учетные данные для входа и все другие необходимые данные в файлах JSON.
multiCapabilities: [{
browserName: 'chrome',
version: 'latest',
platform: 'Windows 8',
name: "tests",
splitTestsBetweenCapabilities: true,
acceptInsecureCerts: true,
cssSelectorsEnabled: true,
shardTestFiles: true,
maxInstances: 5,
}],
maxSessions: 5,
Используя эту конфигурацию, я могу запустить 5 экземпляров браузера Chrome и запустить 5 различных сценариев, каждый из которых самостоятельно извлекает данные.
Проблема в том, что мне нужно использовать вращающийся список из 20 учетных данных для входа в каждый скрипт. Я не уверен, есть ли какие-либо пакеты, которые уже делают это.
Как мне подойти к этому, чтобы каждый скрипт мог использовать одно уникальное имя пользователя и пароль? Каждый сценарий должен иметь возможность выбирать случайные учетные данные, а другие сценарии не должны использовать их до тех пор, пока этот сценарий не завершит свой запуск.
Комментарии:
1. Вам нужно какое-то централизованное хранилище. Но зачем вам именно нужно менять эти логины? Почему при каждом запуске должен выполняться тест с разными логинами? ? В чем причина этого? Поскольку транспортир использует несколько процессов, трудно синхронизировать данные между ними (это большие усилия для небольшой выгоды..) Я не понимаю, почему вы должны вращаться.
2. Я мог бы подумать о том, чтобы скопировать файл со всеми кредитами в каталог tmp. Затем в тестах вы получаете доступ к файлу и используете один из логинов. Когда тест завершен, он снова записывает использованный логин в файл. Для его синхронизации, возможно, попробуйте эту настройку npm, чтобы заблокировать его: => > npmjs.com/package/lockfile , поэтому заблокируйте файл при доступе к нему и добавьте соответствующий механизм опроса в свою функцию «ReadFile()» на случай, если он заблокирован в этот момент! . Я могу привести вам пример,если хотите., 0
3. Другой подход состоит в том , чтобы сделать это с помощью
process.env
, но я предполагаюmutlipleinstances
, что это породит разные процессы, поэтому дочерние процессы не могут писать в один и тот жеprocess.env
—
Ответ №1:
Вы можете использовать отдельный процесс для обновления данных .файлы json, а затем запускайте сценарии, как обычно.
Есть пакеты npm, такие как json-update, доступные, или вы можете создать свой собственный сценарий для запуска перед своим сценарием.
Комментарии:
1. Это похоже на то, что я в итоге сделал.