123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- # -*- coding: UTF-8 -*-
- """
- @Project :pytest_src
- @File :test_case.py
- @Author :haojiang
- @Date :2022/9/23 10:09
- """
- import allure
- import pytest
- from Base.ModuleCfgCheck import ModuleCfgCheck, check_module_param_check
- from Cfg import HARDWARE_TYPE, PROJECT_TYPE, PROJECT
- from Data.DataAccess import ItemType, get_xlsx_data_by_filter, HardwareType, ProjectType
- from Base.Arxml import Arxml
- from Base.BaseContainer import EcucContainerValue
- # HARDWARE_TYPE = HardwareType.GW04
- # PROJECT_TYPE = ProjectType.AS33
- # PROJECT = r'D:\01_Work\02_WP\EC32\branch\src\Config\ECUC'
- # PROJECT = r'D:\01_Work\02_WP\EP39_EV\branch\src\Config\ECUC'
- @allure.feature('Fix Value Parameter Check')
- @pytest.mark.parametrize("module_name, param_name, expect_value", get_xlsx_data_by_filter(HARDWARE_TYPE, PROJECT_TYPE, ItemType.FIXED_VALUE))
- def test_fix_value_case(module_name, param_name, expect_value):
- '''
- 该用例适用于 对某一配置项值进行检查,可能有多个container 都具有该配置项,但所有配置项的值都相同,为一固定值。
- 当有一个值与预期值不匹配时,将报错。
- :param module_name:
- :param param_name:
- :param expect_value:
- :return:
- '''
- item = (param_name, expect_value)
- res = check_module_param_check(PROJECT, module_name, item)
- assert True == res
- @allure.feature('Custom Pattern Parameter Check')
- @pytest.mark.parametrize("module_name, search_pattern, param_name, expect_value", get_xlsx_data_by_filter(HARDWARE_TYPE, PROJECT_TYPE, ItemType.CUSTOM_PATTERN))
- def test_custom_pattern_case(module_name, search_pattern, param_name, expect_value):
- '''
- 该用例适用于测试 通过某种模式规则,定位到唯一的container, 该container包含的指定配置项,是否与期望值相同。
- 例如,可能多个container 都具有该配置项,但对于目标container, 可能和其他container 配置值不同。
- :param module_name:
- :param search_pattern:
- :param param_name:
- :param expect_value:
- :return:
- '''
- item = (param_name, expect_value)
- res = check_module_param_check(PROJECT, module_name, item, search_pattern)
- assert True == res
- # @allure.feature('case03')
- # @pytest.mark.parametrize("module_name, search_pattern, param_name, expect_value", get_xlsx_data_by_filter(PROJECT_TYPE, ItemType.DEPENDENCY_PATTERN))
- # def test_03_case(module_name, search_pattern, param_name, expect_value):
- # # 该测试用例,用于目标container 需要使用 依赖关系才能确定确定的场景。
- #
- # print(module_name, search_pattern, param_name, expect_value)
- # assert True == False
- # pass
- @allure.feature('CanIfRxPduDlcCheck Check')
- @allure.title('CanIfRxPduDlcCheck 检查')
- def test_canif_dlc_check_case():
- '''
- 该用例用于 CanIf 模块 CanIfRxPduCfg 的CanIfRxPduDlcCheck 检查。
- :return:
- '''
- mcc = ModuleCfgCheck('CanIf', PROJECT)
- canif_init_cfg = Arxml.get_first_match_element(mcc.arxml_root, './/SHORT-NAME', 'CanIfInitCfg', 'TEXT_EQ')
- ecuc_containers = Arxml.get_all_match_element(Arxml.get_parent_element(canif_init_cfg), './/ECUC-CONTAINER-VALUE')
- for ecuc in ecuc_containers:
- ecuc_con = EcucContainerValue(ecuc)
- ecuc_con_attr = ecuc_con.container_attr
- ecuc_type = Arxml.get_split_end_value(ecuc_con_attr['container_definition_ref'][-1])
- if ecuc_type == 'CanIfRxPduCfg':
- CanIfRxPduDlc = ecuc_con_attr['parameter_values']['CanIfRxPduDlc'][-1]
- CanIfRxPduDlcCheck = ecuc_con_attr['parameter_values']['CanIfRxPduDlcCheck'][-1]
- # print(CanIfRxPduDlc, CanIfRxPduDlcCheck)
- if (CanIfRxPduDlc == '64' and 'true' == CanIfRxPduDlcCheck) or \
- (CanIfRxPduDlc != '64' and 'false' == CanIfRxPduDlcCheck):
- print(f"DLC Check ERROR! {ecuc_con_attr['short_name']}, dlc is {CanIfRxPduDlc} , actual dlccheck is {CanIfRxPduDlcCheck}")
- assert True == False
- @allure.feature('CanIfBufferSize Check')
- @allure.title('tx buffer 配置检查')
- def test_canif_buffersize_check_case():
- '''
- 该用例用于 CanIf 模块 CanIfBufferCfg CanIfBufferSize CanIfTxBufferHandlingType检查。
- :return:
- '''
- mcc = ModuleCfgCheck('CanIf', PROJECT)
- canif_init_cfg = Arxml.get_first_match_element(mcc.arxml_root, './/SHORT-NAME', 'CanIfInitCfg', 'TEXT_EQ')
- ecuc_containers = Arxml.get_all_match_element(Arxml.get_parent_element(canif_init_cfg), './/ECUC-CONTAINER-VALUE')
- for ecuc in ecuc_containers:
- ecuc_con = EcucContainerValue(ecuc)
- ecuc_con_attr = ecuc_con.container_attr
- ecuc_type = Arxml.get_split_end_value(ecuc_con_attr['container_definition_ref'][-1])
- if ecuc_type == 'CanIfBufferCfg':
- CanIfTxBufferHandlingType = ecuc_con_attr['parameter_values']['CanIfTxBufferHandlingType'][-1]
- CanIfBufferSize = ecuc_con_attr['parameter_values']['CanIfBufferSize'][-1]
- CanIfTxBufferMappedTxPdus = ecuc_con_attr['parameter_values']['CanIfTxBufferMappedTxPdus'][-1]
- print(f"{ecuc_con_attr['short_name']}, CanIfTxBufferHandlingType={CanIfTxBufferHandlingType}")
- if ('CanIfBufferCfg' not in ecuc_con_attr['short_name'] and
- int(CanIfTxBufferMappedTxPdus) > int(CanIfBufferSize)):
- print(f"CanIfBufferSize Check ERROR! {ecuc_con_attr['short_name']}, CanIfBufferSize={CanIfBufferSize}, CanIfTxBufferMappedTxPdus={CanIfTxBufferMappedTxPdus}")
- assert True == False
|