문제

테스트 케이스 NO 24, 38 및 99가 상호 의존적 인 테스트 케이스를 실행할 수있는 100 개의 테스트 케이스가 있습니다.99 번째 테스트 케이스가 실행되는 동안 이전에 실행 된 테스트 사례의 상태를 확인하는 동안 이전에 실행 된 테스트 케이스의 상태를 확인할 수 있습니까? 제 24 일 테스트 사례는 38 번째 및 24 번째 테스트 케이스의 상태에 달려 있으므로 24 번째 또는 38 번째가 실패하면 99 번째 테스트 케이스가 전혀 실행되지 않아도 많이 저장하지 않습니다.시간. 친절하게도 가능한 경우 몇 가지 예로 설명하십시오.미리 감사드립니다!

도움이 되었습니까?

해결책

로봇이 실행되면 일부 상태를 기반으로 테스트를 건너 뛰는 방법이 없습니다. 나는 이것이 로봇의 약점 중 하나라고 생각하지만, 디자이너는 디자이너 건너지 않은 테스트의 개념을 좋아하지 않는 것 같지 않습니다 또한 한 테스트가 다른 테스트가 다른 테스트에 따라 달라질 수 있도록 내장 된 방법이 없습니다. 이 기능에 대한 기능 요청은 거부되었습니다 .

그러나 로봇은 매우 확장 가능하며 버전 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"]
.

다른 팁

이 문제를 해결하려면 다음과 같이 사용합니다.

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

그래서 이것은 당신을 위해도 사용할 수있을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top