Категоризация наборов или кейсов тестов Jasmine или Mocha для запуска подмножества всех тестов - PullRequest
0 голосов
/ 08 мая 2018

Я ищу способ разбить тестовые наборы или наборы тестов на категории для различных сред тестирования, таких как localhost, mock-stage или prelive. Я хочу использовать эти категории, чтобы поместить все тесты в подгруппы, которые можно запускать одновременно, когда это необходимо.

Все, что я нашел до сих пор, это пропуск (); функция в мокко.

Я использовал его для создания такой среды:

preconditions.js

  export function onlyLocal () {

  if (type != "local" ) {
    this.test.parent.pending = true;
      this.skip();
  }
}

Плюс некоторые функции, такие как вход в систему (пользователь) и выход из системы ()

some_spec.js

import * as logins from './preconditions';


describe('This runs only on localhost', function () {

  context('Some Test', function () {

    beforeEach(function () {
      preconditions.onlyLocal()
      preconditions.login('user1')

    })

    afterEach(function () {

      preconditions.onlyLocal()
      preconditions.logout()
    })


    it('Some test that only runs local', function () {
      preconditions.onlyLocal();
      /*test stuff here*/


    })
  })
})

Это работает очень плохо и должно быть сделано до, после и до самого теста. То, что я хочу, - это то, что блокирует весь тест при использовании в части, предшествующей каждому, или способ классификации всего набора тестов. Есть идеи как это сделать?

1 Ответ

0 голосов
/ 08 мая 2018

В конфигурации транспортира у вас есть возможность определить suites. Вы можете настроить некоторые файлы вне вашей конфигурации и поместить различные тесты в комплекты в зависимости от среды, с которой они будут работать.

Пример:

//suite.localhost.js
exports.suites {
  login: 'login.spec.js',
  smoke: ['smoke1.spec.js', 'smoke2.spec.js']
};

//suite.mock-stage.js
exports.suites {
  login: 'login.spec.js',
  smoke: ['some-other-smoke.spec.js', 'another-smoke.spec.js' ]
}

Таким образом, все ваши сюиты будут классифицированы по среде. Теперь, чтобы запустить их, вам нужно будет передать флаг среды. Скажем, вы используете params.env в качестве флага. Вы могли бы запустить их из командной строки, как это

protractor conf.js --params.env=localhost --suite smoke

Теперь в вашем onPrepare вы имеете доступ к этому флагу среды и можете определять наборы на основе того, в какой флаг передан.

onPrepare: function() {
  switch(browser.params.env)
    case 'localhost':
      browser.suites = require('suite.localhost').suites;
      break;
    case 'mock-stage':
      browser.suites = require('suite.mock-stage').suites;
    //and so on...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...