Merging upstream version 1.1.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
50f8dbf7e8
commit
2044ea6182
196 changed files with 10121 additions and 3780 deletions
85
tests/units/result_manager/conftest.py
Normal file
85
tests/units/result_manager/conftest.py
Normal file
|
@ -0,0 +1,85 @@
|
|||
# Copyright (c) 2023-2024 Arista Networks, Inc.
|
||||
# Use of this source code is governed by the Apache License 2.0
|
||||
# that can be found in the LICENSE file.
|
||||
"""See https://docs.pytest.org/en/stable/reference/fixtures.html#conftest-py-sharing-fixtures-across-multiple-files."""
|
||||
|
||||
import json
|
||||
from pathlib import Path
|
||||
from typing import Callable
|
||||
|
||||
import pytest
|
||||
|
||||
from anta.device import AntaDevice
|
||||
from anta.result_manager import ResultManager
|
||||
from anta.result_manager.models import TestResult
|
||||
|
||||
TEST_RESULTS: Path = Path(__file__).parent.resolve() / "test_files" / "test_md_report_results.json"
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def result_manager_factory(list_result_factory: Callable[[int], list[TestResult]]) -> Callable[[int], ResultManager]:
|
||||
"""Return a ResultManager factory that takes as input a number of tests."""
|
||||
# pylint: disable=redefined-outer-name
|
||||
|
||||
def _factory(number: int = 0) -> ResultManager:
|
||||
"""Create a factory for list[TestResult] entry of size entries."""
|
||||
result_manager = ResultManager()
|
||||
result_manager.results = list_result_factory(number)
|
||||
return result_manager
|
||||
|
||||
return _factory
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def result_manager() -> ResultManager:
|
||||
"""Return a ResultManager with 30 random tests loaded from a JSON file.
|
||||
|
||||
Devices: DC1-SPINE1, DC1-LEAF1A
|
||||
|
||||
- Total tests: 30
|
||||
- Success: 7
|
||||
- Skipped: 2
|
||||
- Failure: 19
|
||||
- Error: 2
|
||||
|
||||
See `tests/units/result_manager/test_md_report_results.json` for details.
|
||||
"""
|
||||
manager = ResultManager()
|
||||
|
||||
with TEST_RESULTS.open("r", encoding="utf-8") as f:
|
||||
results = json.load(f)
|
||||
|
||||
for result in results:
|
||||
manager.add(TestResult(**result))
|
||||
|
||||
return manager
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def test_result_factory(device: AntaDevice) -> Callable[[int], TestResult]:
|
||||
"""Return a anta.result_manager.models.TestResult object."""
|
||||
# pylint: disable=redefined-outer-name
|
||||
|
||||
def _create(index: int = 0) -> TestResult:
|
||||
"""Actual Factory."""
|
||||
return TestResult(
|
||||
name=device.name,
|
||||
test=f"VerifyTest{index}",
|
||||
categories=["test"],
|
||||
description=f"Verifies Test {index}",
|
||||
custom_field=None,
|
||||
)
|
||||
|
||||
return _create
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def list_result_factory(test_result_factory: Callable[[int], TestResult]) -> Callable[[int], list[TestResult]]:
|
||||
"""Return a list[TestResult] with 'size' TestResult instantiated using the test_result_factory fixture."""
|
||||
# pylint: disable=redefined-outer-name
|
||||
|
||||
def _factory(size: int = 0) -> list[TestResult]:
|
||||
"""Create a factory for list[TestResult] entry of size entries."""
|
||||
return [test_result_factory(i) for i in range(size)]
|
||||
|
||||
return _factory
|
Loading…
Add table
Add a link
Reference in a new issue