目前我可以:
加载测试设置文件
def load_test_setup(self, canoe_test_setup_file: str = None) -> None:
logger.info(
f'Loading CANoe test setup file <{canoe_test_setup_file}>.')
if self.measurement.Running:
logger.info(
f'Simulation is currently running, so new test setup could \
not be loaded!')
return
self.test_setup.TestEnvironments.Add(canoe_test_setup_file)
test_environment = self.test_setup.TestEnvironments.Item(1)
logger.info(f'Loaded test environment is <{test_environment.Name}>.')
如何访问加载了测试设置(tse)文件的XML测试模块并选择要执行的测试?
代码段中的最后一行before很可能是导致问题的原因。 我已经尝试解决这个问题很长一段时间了,终于找到了解决方案
当您执行
self.test_setup.TestEnvironments.Item(1)
行时win32com创建了一个类型为
TestSetupItem
的对象,该对象没有访问测试用例所需的属性或方法。相反,我们希望访问集合类型为TestSetupFolders
或TestModules
的对象。win32com创建了TestSetupItem
类型的对象,尽管我在测试环境中有一个单独的XML测试模块(称为AutomationTestSeq),您可以see here我发现了三种可能的解决方案
使用
win32com.client.DispatchWithEvents
或win32com.client.gencache.EnsureDispatch
生成一组描述CANoe对象模型的python文件如果您以前使用过这两个对象中的任何一个,
TestEnvironments.Item(1)
将始终返回TestSetupItem
,而不是更合适的类型对象要删除缓存,需要删除
C:\Users\{username}\AppData\Local\Temp\gen_py\{python version}
文件夹当然,每次这样做都不太实际
canoe = win32com.client.dynamic.Dispatch("CANoe.Application")
从现在起,您使用canoe
创建的任何对象都将被动态调度强制动态分派比每次手动清除缓存文件夹更容易。这总是给我带来好的结果。但这样做不会让您对对象有任何洞察。您将无法看到对象的可接受属性和方法
TestSetupItem
到TestSetupFolders
或TestModules
李>这样做的风险是,如果键入错误,您将得到意外的结果。但到目前为止对我来说效果很好。 简而言之:
win32.CastTo(test_env, "ITestEnvironment2")
。这将确保您按照CANoe技术参考使用推荐的对象层次结构请注意,您还必须将
TestSequenceItem
类型转换为TestCase
才能访问测试用例裁决并启用/禁用测试用例下面是一个不错的示例脚本
继续你所做的
TestEnvironment包含TestModules。每个TestModule都包含一个TestSequence,该序列依次包含测试用例
请记住,您不能单独测试用例,而只能测试模块。但是您可以在执行之前使用COM-API启用和禁用单个测试用例
(在我的头顶上输入这个,可能无法100%工作)
您必须记住,TestSequence还可以包含其他TestSequence(即TestGroup)。这取决于TestModule的设置方式。如果是这样,您必须在循环中处理这些问题,并在搜索感兴趣的测试用例时进入这些测试组
相关问题 更多 >
编程相关推荐