Skip to content

Result Manager models

TestResult Entry

Bases: BaseModel

Describe result of a test from a single device.

Attributes:

Name Type Description
name str

Device name where the test has run.

test str

Test name runs on the device.

results str

Result of the test. Can be one of unset / failure / success.

message str

Message to report after the test.

Source code in anta/result_manager/models.py
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
class TestResult(BaseModel):
    """
    Describe result of a test from a single device.

    Attributes:
        name (str): Device name where the test has run.
        test (str): Test name runs on the device.
        results (str): Result of the test. Can be one of unset / failure / success.
        message (str, optional): Message to report after the test.
    """
    name: str
    test: str
    result: str = 'unset'
    messages: List[str] = []

    @validator('result', allow_reuse=True)
    def name_must_be_in(cls, v: str) -> str:
        """
        Status validator

        Validate status is a supported one

        Args:
            v (str): User defined status

        Raises:
            ValueError: If status is unsupported

        Returns:
            str: status value
        """
        if v not in RESULT_OPTIONS:
            raise ValueError(f'must be one of {RESULT_OPTIONS}')
        return v

    def is_success(self, message: str = '') -> bool:
        """
        Helper to set status to success

        Args:
            message (str): Optional message related to the test

        Returns:
            bool: Always true
        """
        return self._set_status('success', message)

    def is_failure(self, message: str = '') -> bool:
        """
        Helper to set status to failure

        Args:
            message (str): Optional message related to the test

        Returns:
            bool: Always true
        """
        return self._set_status('failure', message)

    def is_skipped(self, message: str = '') -> bool:
        """
        Helper to set status to skipped

        Args:
            message (str): Optional message related to the test

        Returns:
            bool: Always true
        """
        return self._set_status('skipped', message)

    def is_error(self, message: str = '') -> bool:
        """
        Helper to set status to error

        Args:
            message (str): Optional message related to the test

        Returns:
            bool: Always true
        """
        return self._set_status('error', message)

    def _set_status(self, status: str, message: str = '') -> bool:
        """
        Set status and insert optional message

        Args:
            status (str): status of the test
            message (str): optional message

        Returns:
            bool: Always true
        """
        self.result = status
        if message != '':
            self.messages.append(message)
        return True

is_error(message='')

Helper to set status to error

Parameters:

Name Type Description Default
message str

Optional message related to the test

''

Returns:

Name Type Description
bool bool

Always true

Source code in anta/result_manager/models.py
81
82
83
84
85
86
87
88
89
90
91
def is_error(self, message: str = '') -> bool:
    """
    Helper to set status to error

    Args:
        message (str): Optional message related to the test

    Returns:
        bool: Always true
    """
    return self._set_status('error', message)

is_failure(message='')

Helper to set status to failure

Parameters:

Name Type Description Default
message str

Optional message related to the test

''

Returns:

Name Type Description
bool bool

Always true

Source code in anta/result_manager/models.py
57
58
59
60
61
62
63
64
65
66
67
def is_failure(self, message: str = '') -> bool:
    """
    Helper to set status to failure

    Args:
        message (str): Optional message related to the test

    Returns:
        bool: Always true
    """
    return self._set_status('failure', message)

is_skipped(message='')

Helper to set status to skipped

Parameters:

Name Type Description Default
message str

Optional message related to the test

''

Returns:

Name Type Description
bool bool

Always true

Source code in anta/result_manager/models.py
69
70
71
72
73
74
75
76
77
78
79
def is_skipped(self, message: str = '') -> bool:
    """
    Helper to set status to skipped

    Args:
        message (str): Optional message related to the test

    Returns:
        bool: Always true
    """
    return self._set_status('skipped', message)

is_success(message='')

Helper to set status to success

Parameters:

Name Type Description Default
message str

Optional message related to the test

''

Returns:

Name Type Description
bool bool

Always true

Source code in anta/result_manager/models.py
45
46
47
48
49
50
51
52
53
54
55
def is_success(self, message: str = '') -> bool:
    """
    Helper to set status to success

    Args:
        message (str): Optional message related to the test

    Returns:
        bool: Always true
    """
    return self._set_status('success', message)

name_must_be_in(v)

Status validator

Validate status is a supported one

Parameters:

Name Type Description Default
v str

User defined status

required

Raises:

Type Description
ValueError

If status is unsupported

Returns:

Name Type Description
str str

status value

Source code in anta/result_manager/models.py
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
@validator('result', allow_reuse=True)
def name_must_be_in(cls, v: str) -> str:
    """
    Status validator

    Validate status is a supported one

    Args:
        v (str): User defined status

    Raises:
        ValueError: If status is unsupported

    Returns:
        str: status value
    """
    if v not in RESULT_OPTIONS:
        raise ValueError(f'must be one of {RESULT_OPTIONS}')
    return v

ListResult

Bases: BaseModel

List result for all tests on all devices.

Attributes:

Name Type Description
__root__ List[TestResult]

A list of TestResult objects.

Source code in anta/result_manager/models.py
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
class ListResult(BaseModel):
    """
    List result for all tests on all devices.

    Attributes:
        __root__ (List[TestResult]): A list of TestResult objects.
    """
    # pylint: disable=R0801

    __root__: List[TestResult] = []

    def extend(self, values: List[TestResult]) -> None:
        """Add support for extend method."""
        self.__root__.extend(values)

    def append(self, value: TestResult) -> None:
        """Add support for append method."""
        self.__root__.append(value)

    def __iter__(self) -> Iterator[TestResult]:
        """Use custom iter method."""
        return iter(self.__root__)

    def __getitem__(self, item: int) -> TestResult:
        """Use custom getitem method."""
        return self.__root__[item]

    def __len__(self) -> int:
        """Support for length of __root__"""
        return len(self.__root__)

__getitem__(item)

Use custom getitem method.

Source code in anta/result_manager/models.py
133
134
135
def __getitem__(self, item: int) -> TestResult:
    """Use custom getitem method."""
    return self.__root__[item]

__iter__()

Use custom iter method.

Source code in anta/result_manager/models.py
129
130
131
def __iter__(self) -> Iterator[TestResult]:
    """Use custom iter method."""
    return iter(self.__root__)

__len__()

Support for length of root

Source code in anta/result_manager/models.py
137
138
139
def __len__(self) -> int:
    """Support for length of __root__"""
    return len(self.__root__)

append(value)

Add support for append method.

Source code in anta/result_manager/models.py
125
126
127
def append(self, value: TestResult) -> None:
    """Add support for append method."""
    self.__root__.append(value)

extend(values)

Add support for extend method.

Source code in anta/result_manager/models.py
121
122
123
def extend(self, values: List[TestResult]) -> None:
    """Add support for extend method."""
    self.__root__.extend(values)

Last update: April 6, 2023