Groovy скрипт продолжает работать при запуске набора тестов
Я столкнулся со странным поведением отличного скрипта при запуске всего пакета. У меня есть сценарий, который упорядочивает мои тестовые сценарии в алфавитном порядке, прежде чем они запустятся, и кажется, что он будет работать вечно, даже когда весь набор тестов завершится.
После того, как я нажму на него, чтобы увидеть детали и сразу же вернуться к тестовому пакету, он показывает, что он завершен и больше не работает.
Что-то не так с моим сценарием, пожалуйста? Я не вижу бесконечных петель или чего-то в этом роде. Это просто ошибка в ReadyAPI? Спасибо за совет.
Мой скрипт сортировки:
ArrayList<String> testCaseList = new ArrayList<String>();
for (testCase in testRunner.testCase.testSuite.getTestCaseList()) {
testCaseList.add(testCase.getName());
}
testCaseList.sort();
int i = 0;
for (tCase in testCaseList) {
def curCase = testRunner.testCase.testSuite.getTestCaseByName(tCase);
curIndex = testRunner.testCase.testSuite.getIndexOfTestCase(curCase);
testRunner.testCase.testSuite.moveTestCase(curIndex,i-curIndex);
i++;
}
1 ответ
В настоящее время выглядит, у вас есть отдельный тест для сортировки. Но на самом деле, это не ваш тестовый пример.
Итак, первое изменение, которое нужно сделать, - это переместить скрипт из тестового примера в Setup Script
тестового набора.
Вот сценарий установки Test Suite, который делает это в алфавитном порядке. Следует обратить особое внимание в том случае, если в именах тестовых наборов есть цифры, должны быть в естественном порядке. В противном случае все должно быть в порядке.
Пожалуйста, следуйте встроенным комментариям.
//Get the sorted order of the test case which is expected order
def newList = testSuite.testCaseList.name.sort()
log.info "Expected order of test cases: ${newList}"
//Get the current index of the test case
def getTestCaseIndex = { name -> testSuite.getIndexOfTestCase(testSuite.getTestCaseByName(name))}
//Closure definition and this is being called recursively to make the desired order
def rearrange
rearrange = {
def testCaseNames = testSuite.testCaseList.name
if (testCaseNames != newList) {
log.info testCaseNames
newList.eachWithIndex { tc, index ->
def existingIndex = getTestCaseIndex(tc)
if (index != existingIndex) {
testSuite.moveTestCase(index, existingIndex-index)
rearrange()
}
}
} else {
log.info 'All cases sorted'
}
}
//Call the closure
rearrange()
С этим Setup Script
при выполнении набора тестов автоматически тестовые случаи перемещаются в алфавитном порядке. Следовательно, для простого заказа не требуется отдельный контрольный пример.
Теперь комплект исполняется с желаемыми тестовыми примерами, и текущей проблемы, упомянутой в вопросе, вообще не должно быть.