Автоматическое отключение / неисполнение взаимозависимых испытаний в рамках робота

StackOverflow https://stackoverflow.com//questions/25075706

Вопрос

Если скажем, у меня есть 100 тестовых случаев для запуска, в котором тестовый случай № 24, 38 и 99 не взаимозависимо.Только возможно, что в то время как 99-й тестовый случай выполняется, вы обнаружите, что статус ранее выполняемого тестового случая (скажем, 24 или 38-й тестовый случай)? В моем случае 99-й тестовый случай зависит от состояния 38-го и 24-го тестового случая и, следовательно, если либо 24 или 38-й неудачника, я бы хотел, чтобы 99-й тестовый случай не должен быть выполнен вообще и, таким образом, сэкономитьвремени. Пожалуйста, объясните с некоторым примером, если это возможно.Заранее спасибо!

Это было полезно?

Решение

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

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

Основная идея - это, кэшируйте статус Pass / Fail в качестве каждой тестовой отделки (через специальный метод _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"]
.

Другие советы

Чтобы решить эту проблему, я использую что-то подобное:

Run Keyword if  '${PREV TEST STATUS}'=='PASSED'  myKeyword
.

Так, может быть, это будет использоваться также для вас.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top