From 030c8c879f311d77d973d3a2903e482f65d1a21a Mon Sep 17 00:00:00 2001 From: asiazhang Date: Wed, 3 Jul 2024 15:38:07 +0800 Subject: [PATCH] Improve load result (#16) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 允许加载结果合并 * 允许TestCase进行比较,方便去重复 * fix mypy check --- pyproject.toml | 2 +- src/testsolar_testtool_sdk/model/load.py | 4 ++++ src/testsolar_testtool_sdk/model/test.py | 16 ++++++++++++-- tests/test_test.py | 27 ++++++++++++++++++++++++ 4 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 tests/test_test.py diff --git a/pyproject.toml b/pyproject.toml index 67dadca..836e0e4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "testsolar-testtool-sdk" -version = "0.3.1" +version = "0.3.2" description = "Python3 SDK for TestSolar testtool" authors = [ { name = "asiazhang", email = "asiazhang2002@gmail.com" }, diff --git a/src/testsolar_testtool_sdk/model/load.py b/src/testsolar_testtool_sdk/model/load.py index 0b23423..040e532 100644 --- a/src/testsolar_testtool_sdk/model/load.py +++ b/src/testsolar_testtool_sdk/model/load.py @@ -15,3 +15,7 @@ class LoadError: class LoadResult: Tests: List[TestCase] = field(default_factory=list) LoadErrors: List[LoadError] = field(default_factory=list) + + def merge(self, data: 'LoadResult') -> None: + self.Tests.extend(data.Tests) + self.LoadErrors.extend(data.LoadErrors) diff --git a/src/testsolar_testtool_sdk/model/test.py b/src/testsolar_testtool_sdk/model/test.py index cce4942..14f6a64 100644 --- a/src/testsolar_testtool_sdk/model/test.py +++ b/src/testsolar_testtool_sdk/model/test.py @@ -1,11 +1,23 @@ -from typing import Dict +from typing import Dict, Any from dataclasses import dataclass, field -@dataclass +@dataclass() class TestCase: __test__ = False Name: str Attributes: Dict[str, str] = field(default_factory=dict) + + def __eq__(self, other: Any) -> bool: + if isinstance(other, self.__class__): + return self.Name == other.Name + else: + return False + + def __hash__(self) -> int: + """ + Name相同认为是同一个用例 + """ + return hash(self.Name) diff --git a/tests/test_test.py b/tests/test_test.py new file mode 100644 index 0000000..dc6b112 --- /dev/null +++ b/tests/test_test.py @@ -0,0 +1,27 @@ +from testsolar_testtool_sdk.model.test import TestCase + + +def test_test_case_duplicate(): + case1 = TestCase( + Name="aa", + Attributes={} + ) + + case2 = TestCase( + Name="aa", + Attributes={"A": "B"} + ) + + case3 = TestCase( + Name="bb", + Attributes={"A": "B"} + ) + + assert case1 == case2 + assert case1 != case3 + + data = [case1, case2] + + uniq_data = list(set(data)) + + assert len(uniq_data) == 1