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при выполнении набора тестов автоматически тестовые случаи перемещаются в алфавитном порядке. Следовательно, для простого заказа не требуется отдельный контрольный пример.

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

Другие вопросы по тегам