[#270] Updates related to testing platform

Signed-off-by: a.berezin <a.berezin@yadro.com>
This commit is contained in:
Andrey Berezin 2024-07-26 16:34:47 +03:00
parent 166e44da9c
commit 7a500330de
8 changed files with 168 additions and 34 deletions

View file

@ -1,5 +1,5 @@
from frostfs_testlib.analytics import test_case
from frostfs_testlib.analytics.test_case import TestCasePriority
from frostfs_testlib.analytics.test_collector import TestCase, TestCaseCollector
from frostfs_testlib.analytics.test_exporter import TestExporter
from frostfs_testlib.analytics.test_exporter import TСExporter
from frostfs_testlib.analytics.testrail_exporter import TestrailExporter

View file

@ -3,7 +3,8 @@ from abc import ABC, abstractmethod
from frostfs_testlib.analytics.test_collector import TestCase
class TestExporter(ABC):
# TODO: REMOVE ME
class TСExporter(ABC):
test_cases_cache = []
test_suites_cache = []
@ -46,9 +47,7 @@ class TestExporter(ABC):
"""
@abstractmethod
def update_test_case(
self, test_case: TestCase, test_case_in_tms, test_suite, test_suite_section
) -> None:
def update_test_case(self, test_case: TestCase, test_case_in_tms, test_suite, test_suite_section) -> None:
"""
Update test case in TMS
"""
@ -60,9 +59,7 @@ class TestExporter(ABC):
for test_case in test_cases:
test_suite = self.get_or_create_test_suite(test_case.suite_name)
test_section = self.get_or_create_suite_section(
test_suite, test_case.suite_section_name
)
test_section = self.get_or_create_suite_section(test_suite, test_case.suite_section_name)
test_case_in_tms = self.search_test_case_id(test_case.id)
steps = [{"content": value, "expected": " "} for key, value in test_case.steps.items()]

View file

@ -1,10 +1,10 @@
from testrail_api import TestRailAPI
from frostfs_testlib.analytics.test_collector import TestCase
from frostfs_testlib.analytics.test_exporter import TestExporter
from frostfs_testlib.analytics.test_exporter import TСExporter
class TestrailExporter(TestExporter):
class TestrailExporter(TСExporter):
def __init__(
self,
tr_url: str,
@ -62,19 +62,13 @@ class TestrailExporter(TestExporter):
It's help do not call TMS each time then we search test case
"""
for test_suite in self.test_suites_cache:
self.test_cases_cache.extend(
self.api.cases.get_cases(self.tr_project_id, suite_id=test_suite["id"])
)
self.test_cases_cache.extend(self.api.cases.get_cases(self.tr_project_id, suite_id=test_suite["id"]))
def search_test_case_id(self, test_case_id: str) -> object:
"""
Find test cases in TestRail (cache) by ID
"""
test_cases = [
test_case
for test_case in self.test_cases_cache
if test_case["custom_autotest_name"] == test_case_id
]
test_cases = [test_case for test_case in self.test_cases_cache if test_case["custom_autotest_name"] == test_case_id]
if len(test_cases) > 1:
raise RuntimeError(f"Too many results found in test rail for id {test_case_id}")
@ -87,9 +81,7 @@ class TestrailExporter(TestExporter):
"""
Get suite name with exact name from Testrail or create if not exist
"""
test_rail_suites = [
suite for suite in self.test_suites_cache if suite["name"] == test_suite_name
]
test_rail_suites = [suite for suite in self.test_suites_cache if suite["name"] == test_suite_name]
if not test_rail_suites:
test_rail_suite = self.api.suites.add_suite(
@ -102,17 +94,13 @@ class TestrailExporter(TestExporter):
elif len(test_rail_suites) == 1:
return test_rail_suites.pop()
else:
raise RuntimeError(
f"Too many results found in test rail for suite name {test_suite_name}"
)
raise RuntimeError(f"Too many results found in test rail for suite name {test_suite_name}")
def get_or_create_suite_section(self, test_rail_suite, section_name) -> object:
"""
Get suite section with exact name from Testrail or create new one if not exist
"""
test_rail_sections = [
section for section in test_rail_suite["sections"] if section["name"] == section_name
]
test_rail_sections = [section for section in test_rail_suite["sections"] if section["name"] == section_name]
if not test_rail_sections:
test_rail_section = self.api.sections.add_section(
@ -128,9 +116,7 @@ class TestrailExporter(TestExporter):
elif len(test_rail_sections) == 1:
return test_rail_sections.pop()
else:
raise RuntimeError(
f"Too many results found in test rail for section name {section_name}"
)
raise RuntimeError(f"Too many results found in test rail for section name {section_name}")
def prepare_request_body(self, test_case: TestCase, test_suite, test_suite_section) -> dict:
"""
@ -164,9 +150,7 @@ class TestrailExporter(TestExporter):
self.api.cases.add_case(**request_body)
def update_test_case(
self, test_case: TestCase, test_case_in_tms, test_suite, test_suite_section
) -> None:
def update_test_case(self, test_case: TestCase, test_case_in_tms, test_suite, test_suite_section) -> None:
"""
Update test case in Testrail
"""