LoadTest.m 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. function LoadTest(case_name)
  2. evalin('base', 'clear all');
  3. caseFile = [case_name '_Case.json'];
  4. test_case = jsondecode(fileread(caseFile)); %读取测试用例文件
  5. target_model = test_case.Model.name;
  6. connectionFile = test_case.Model.connection_file;
  7. % 初始化模型
  8. load_system(target_model);
  9. % scopes = find_system(target_model, 'FindAll', 'on', 'BlockType', 'Scope');
  10. % CommentBlocks(scopes, 1);
  11. evalin('base', test_case.Model.init);
  12. % 获取模型测试接口
  13. ports = LoadModelPorts(target_model);
  14. % 初始化注入信号
  15. % 默认物理信号为0,使能直通
  16. for i = 1:length(ports.Physical)
  17. SetPortSignal(ports.Physical(i), 0);
  18. SetPortThrough(ports.Physical(i), 1);
  19. SetPortEnable(ports.Physical(i), 1);
  20. end
  21. % 默认软件信号为0,关闭直通
  22. for i = 1:length(ports.Software)
  23. SetPortSignal(ports.Software(i), 0);
  24. SetPortThrough(ports.Software(i), 0);
  25. SetPortEnable(ports.Software(i), 0);
  26. end
  27. % 加载注入信号
  28. test_connection = jsondecode(fileread(connectionFile)); %读取连接文件
  29. % 应用模型注入信号
  30. for i = 1:length(test_case.Injections)
  31. ApplyInjection(test_case.Injections(i), test_connection, ports);
  32. end
  33. % 应用模型初始化信号
  34. for i = 1:length(test_case.Initializations)
  35. ApplyInit(test_case.Initializations(i), test_connection)
  36. end
  37. %% 运行模型
  38. if isfield(test_case.Model, 'config')
  39. for i = 1:length(test_case.Model.config)
  40. set_param(target_model, test_case.Model.config(i).name, test_case.Model.config(i).value);
  41. end
  42. end
  43. end