2016-02-19 3 views
0

Я пытаюсь понять, как ведет себя робот, когда происходит сбой при тестировании.Robotframework: поведение при неудачном срыве

Понятно, что если тестовый пример завершает выполнение, его следует считать пройденным. Teardown не является частью теста, поэтому, если произошел сбой при разрыве, тестовый пример все равно должен быть отмечен как принятый. Поведение, которое я наблюдаю, заключается в том, что если срыв теста не удался, тестовый случай не срабатывает. Это то, что должно произойти, и есть ли способ изменить его?

Я также вижу что-то странное, когда Снукер срывается.

Консольный выход показывает тестовый чехол, как переданный, отображающий |PASS| рядом с корпусом. Однако статистика в нижней части вывода показывает, что все случаи не удались.

Вот пример:

*** Settings *** 
Suite Teardown  Teardown 

*** Keywords *** 
Setup 
    Log to Console  setup 

Teardown 
    Should Be Equal  1  2 


*** Test Cases *** 
case1 
    [Setup]  Setup 
    Log To Console  case 

и выход:

============================================================================== 
Test 
============================================================================== 
case1                 setup 
.case 
case1                 | PASS | 
------------------------------------------------------------------------------ 
Test                 | FAIL | 
Suite teardown failed: 
1 != 2 

1 critical test, 0 passed, 1 failed 
1 test total, 0 passed, 1 failed 
============================================================================== 

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

ответ

1

Иногда испытание не удается срывать - это важная проблема, например, очистка не завершена, и это приводит к сбою других тестовых случаев. Поэтому рамка робота всегда сообщает FAIL, если тестовый пример не срабатывает. Используйте Run Keyword And Ignore Error если ключевое слово неудача не является проблемой для вашего теста:

*** Keywords *** 
Teardown 
    Run Keyword And Ignore Error Should Be Equal  1  2 

Однако вы должны быть осторожны, что если ключевое слово не удается, ничего не сообщается, если вы не проверить детали в выходных журналах.

комплект сбрасывает пробегает после всех завершенных тестов. Первый тестовый пример передан и распечатывается программа PASS. После этого пакет срывается, и он терпит неудачу, поэтому программа печатает FAIL. Это ожидаемый результат. Это легче понять, если есть больше тестов в один люксе, например:

Test suite A 
    run case 1   ----> print PASS 
    run case 2   ----> print PASS 
    run case 3   ----> print PASS 
    run suite teardown ----> print FAIL (and change case 1, 2, 3 to FAIL) 

И рушить неудачу так же, как тест случае неудачи в рамках робота, поэтому каркасный робот сообщает обо всех случаях испытания не в конец. Проверьте вывод log.html, вы можете видеть, что все тестовые примеры: FAIL.

0

Я выяснил решение, которое может быть полезным или может быть полезным. У нас есть интеграция Дженкинса, и Дженкинс сообщит обо всех этих неудачах тестирования, которые я хочу увидеть как прошедшие. То, что я сделал, не создавало html из робота, а просто xml.

Затем я использовал etree для создания нового тестового XML-тега.

def create_test(id= 'sx-tx', name='Test'): 
return ET.Element("test", attrib={'id': id, 'name': name}) 

Я скопировал Teardown внутренностей к новому испытанию и использовали «rebot», чтобы сгенерировать XML из нового XML. Это сделало Teardown тест, поэтому он показал только один сбой.

Я могу разработать, если вы хотите.