Инициализация переменных в операторе if

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

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

Основная идея заключается в том, что кеширование статуса прохода / отказа по завершении каждого теста (с помощью специального метода _end_test). Затем используйте это значение, чтобы определить, сбой немедленно или нет.

Вот пример того, как использовать такое ключевое слово:

*** Settings ***
| Library | /path/to/DependencyLibrary.py

*** Test Cases ***
| Example of a failing test
| | fail | this test has failed

| Example of a dependent test
| | [Setup] | Require test case | Example of a failing test
| | log | hello, world

Вот определение библиотеки:

from robot.libraries.BuiltIn import BuiltIn

class DependencyLibrary(object):
    ROBOT_LISTENER_API_VERSION = 2
    ROBOT_LIBRARY_SCOPE = "GLOBAL"

    def __init__(self):
        self.ROBOT_LIBRARY_LISTENER = self
        self.test_status = {}

    def require_test_case(self, name):
        key = name.lower()
        if (key not in self.test_status):
            BuiltIn().fail("required test case can't be found: '%s'" % name)

        if (self.test_status[key] != "PASS"):
            BuiltIn().fail("required test case failed: '%s'" % name)

        return True

    def _end_test(self, name, attrs):
        self.test_status[name.lower()] = attrs["status"]

78
задан Fifoernik 10 July 2019 в 10:23
поделиться