Как запустить тестовые случаи как часть установки пакета? - PullRequest
0 голосов
/ 06 мая 2019

Я использую robotframework для запуска набора функций Python в качестве тестовых случаев. Я пометил кучу тестовых случаев как настройку и кучу тестовых случаев как очистку. Я использую опцию -i в роботе для запуска различных тестовых случаев. Обычно я запускаю -i setup для настройки и -i cleanup для очистки набора тестов. Тем не менее, если тестовый пример в настройке не пройден, все тестовые примеры все еще выполняются. Я ищу возможность пометить кучу тестовых наборов как установку комплекта и разбор комплекта, и запустить разбор комплекта, если установка комплекта не удалась автоматически без выполнения каких-либо промежуточных тестов между ними. Я попробовал параметр «Настройка пакета с ключевыми словами», но с этим я перемещаю свои тестовые примеры в раздел ключевых слов и теряю функциональность тегов.

Оригинальный файл робота

*** Settings ***

Suite Setup
Suite Teardown

*** Test Cases ***

setup_1
    [Tags]    setup    smoke    1
    ${result}   ${result_str} =     test.test.TestSetup.test_setup_1
    Should Be Equal  ${result}  ${TRUE}
setup_2
    [Tags]    setup    smoke    1
    ${result}   ${result_str} =     test.test.TestSetup.test_setup_2
    Should Be Equal  ${result}  ${TRUE}
setup_3
    [Tags]    setup    smoke    1
    ${result}   ${result_str} =     test.test.TestSetup.test_setup_3
    Should Be Equal  ${result}  ${TRUE}

TestCase 1
    [Tags]      tc
    ${result}   ${result_str} =     test.test.my_func.test_func_1
    Should Be Equal  ${result}  ${TRUE}
TestCase 2
    [Tags]      tc
    ${result}   ${result_str} =     test.test.my_func.test_func_2
    Should Be Equal  ${result}  ${TRUE}

cleanup_1
    [Tags]    cleanup    smoke    1
    ${result}   ${result_str} =     test.test.TestCleanup.test_cleanup_1
    Should Be Equal  ${result}  ${TRUE}
cleanup_2
    [Tags]    cleanup    smoke    1
    ${result}   ${result_str} =     test.test.TestCleanup.test_cleanup_2
    Should Be Equal  ${result}  ${TRUE}

Файл робота с ключевыми словами

*** Settings ***
Suite Setup     Run keywords
...     setup_1
...     AND setup_2
...     AND setup_3

Suite Teardown  Run keywords
...     cleanup_1
...     AND cleanup_2

*** Keywords ***
setup_1
    [Tags]    setup    smoke    1
    ${result}   ${result_str} =     test.test.TestSetup.test_setup_1
    Should Be Equal  ${result}  ${TRUE}
setup_2
    [Tags]    setup    smoke    1
    ${result}   ${result_str} =     test.test.TestSetup.test_setup_2
    Should Be Equal  ${result}  ${TRUE}
setup_3
    [Tags]    setup    smoke    1
    ${result}   ${result_str} =     test.test.TestSetup.test_setup_3
    Should Be Equal  ${result}  ${TRUE}

cleanup_1
    [Tags]    cleanup    smoke    1
    ${result}   ${result_str} =  test.test.TestCleanup.test_cleanup_1
    Should Be Equal  ${result}  ${TRUE}
cleanup_2
    [Tags]    cleanup    smoke    1
    ${result}   ${result_str} =     test.test.TestCleanup.test_cleanup_2
    Should Be Equal  ${result}  ${TRUE}

*** Test Cases ***
TestCase 1
    [Tags]      tc
    ${result}   ${result_str} =     test.test.my_func.test_func_1
    Should Be Equal  ${result}  ${TRUE}
TestCase 2
    [Tags]      tc
    ${result}   ${result_str} =     test.test.my_func.test_func_2
    Should Be Equal  ${result}  ${TRUE}

Есть ли способ пометить тесты, помеченные при настройке, как Suite Setup, и пометить тесты, которые помечены при очистке, как Suite Teardown и при этом иметь возможность запускать отдельные тесты при настройке и демонтаже?

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Как запустить тестовые наборы как часть установки пакета?

Вы не можете.Тестовые случаи - это не то, что вы можете явно вызывать из чего-то другого.

Если вы создаете повторно используемый компонент, который должен запускаться в настройке пакета, это должно быть ключевое слово пользователя, а не тестовый пример.

Если вы хотите, чтобы весь пакет прекратил работу при сбое одного теста, вы можете использовать параметр командной строки -X / --exitonfailure.Другой вариант - создать тестовый набор, который вызывает встроенное ключевое слово Неустранимая ошибка

0 голосов
/ 07 мая 2019

Suite Setup и Suite Teardown предназначены для выполнения серии шагов до и после выполнения тестовых случаев. Вы можете думать о Suite Setup, похожем на Pre-requisite/Pre-condition в ручных тестовых случаях. Целесообразно, чтобы весь пакет не выполнялся при сбое установки (как в случае с роботом).

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

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

Предположения:

  1. Отдельные ключевые слова в настройке и развёртывании комплекта не зависят друг от друга (т. Е.), Если в настройке комплекта есть 2 ключевых слова, а именно Keyword 1 и Keyword 2, они не зависят друг от друга. Точно так же для ключевых слов в сворачивании набора.
  2. Тестовые случаи зависят только от одного из ключевых слов setup и tear-down (то есть), если в настройке пакета есть 2 ключевых слова, а именно Keyword 1 и Keyword 2, каждый тестовый случай зависит только от одного из ключевые слова.

Workaround 1:

Используйте настройки Test Setup и Test Teardown . Это позволяет вам проваливать тестовые случаи только для неудачной установки, которую затем можно повторно запустить при сбое.

Workaround 2:

Переместите тестовые наборы в 2 разных набора и используйте Suite Setup и Suite Teardown для настройки соответствующих узлов.

Примечание. В обоих вышеупомянутых случаях вам придется перенести контрольные примеры в процессе установки и демонтажа в другой набор. И да, у вас будет более одного комплекта для обслуживания, но я полагаю, что такой скрипт будет намного проще поддерживать вместо того, чтобы создавать беспорядок из одного комплекта.

Если упомянутые допущения неверны, повторный неудачный тест в вашем наборе не имеет смысла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...