Программно создайте и запущенные тестовые сценарии последовательности

В этом примере показано, как создать и задать несколько сценариев тестирования в одном блоке Test Sequence. Способность задать больше чем одну тестовую последовательность в блоке позволяет вам сократить количество отдельных Тестовых блоков Последовательности в вашей тестовой обвязке.

Этот пример использует HeatPumpScenario1 модель, которая уже имеет тестовую обвязку, которая содержит блок Test Sequence. В этом примере вы преобразуете блок, чтобы использовать сценарии, добавить новый сценарий в блок, отредактировать шаг сценария и активировать новый сценарий так, чтобы это запустилось, когда модель симулирует.

Этот пример также показывает, как использовать сценарии в итерациях, чтобы запустить несколько итераций в одном тесте.

Откройте модель и тестовую обвязку

Откройте Controller подсистема HeatPumpScenario1 модель и ее тестовая обвязка, ScenarioTest.

open_system('HeatPumpScenario1')
sltest.harness.open('HeatPumpScenario1/Controller','ScenarioTest');

Настройте сценарии

Включите сценарии

Установите блок Test Sequence использовать сценарии. Существующие шаги и переходы перемещены в сценарий, который, в этом примере, называют FirstScenario. Обратите внимание на то, что, если вы изменяете блок Test Sequence, чтобы использовать сценарии, вы не можете вернуться, которые блокируются к режиму несценария.

sltest.testsequence.useScenario('ScenarioTest/Test Sequence',...
   'FirstScenario');

Добавьте другой сценарий

Добавьте второй сценарий в блок Test Sequence. Назовите сценарий NewScenario.

sltest.testsequence.addScenario('ScenarioTest/Test Sequence','NewScenario');

Отредактируйте содержимое сценария

Отредактируйте первый шаг нового сценария, чтобы изменить значения Troom_in и Tset переменные. Снабдите имя предисловием шага с именем сценария, которое содержит шаг. Точно так же при добавлении или изменении переходов, необходимо также снабдить переход предисловием с именем сценария.

action = sprintf('Troom_in = 75;\nTset = 75;\n');
sltest.testsequence.editStep('ScenarioTest/Test Sequence',...
    'NewScenario.step_1','Action',action);

Чтобы просмотреть содержимое сценария, используйте sltest.testsequence.findStep(blockPath), который возвращает массив, содержащий имена шагов для всех сценариев. Затем используйте sltest.testsequence.readStep(stepName) или sltest.testsequence.readTransition(stepName) видеть содержимое заданного шага или перехода, соответственно. Можно также просмотреть содержимое сценария путем двойного клика по блоку Test Sequence в обвязке, чтобы открыть редактор блока.

Задайте который сценарий запуститься

Задайте новый сценарий, чтобы запуститься во время симуляции модели. Этот сценарий является активным сценарием, который является единственным сценарием, который запускается во время симуляции. Для альтернативного способа активироваться и запустить сценарий или запустить сценарии с помощью итераций, смотрите ниже.

sltest.testsequence.activateScenario('ScenarioTest/Test Sequence',...
   'NewScenario');

Запустите модель

Запустите модель Используя новый сценарий

Можно запустить только один активный сценарий время, если вы не используете цикл в командной строке или в скрипте или итерациях запуска (см. ниже). Обратите внимание на то, что быстрый перезапуск поддерживается при переключении активных сценариев и выполнении модели.

sim('ScenarioTest')

В тестовой обвязке просмотрите блоки Scope, чтобы видеть результаты симуляции для нового сценария.

Запустите различный сценарий

Активируйте первый сценарий.

sltest.testsequence.activateScenario('ScenarioTest/Test Sequence',...
   'FirstScenario');

Повторно выполните модель.

sim('ScenarioTest')

В тестовой обвязке просмотрите блоки Scope, чтобы видеть результаты симуляции для первого сценария.

Используйте переменную рабочей области, чтобы активировать и запустить сценарий

В некоторых случаях, такой что касается цикличного выполнения через сценарии, вы можете хотеть использовать переменную рабочей области, чтобы управлять который сценарий активироваться, вместо того, чтобы использовать activateScenario. Шаги для использования переменной рабочей области:

  1. Установите источник управления сценарием на рабочую область при помощи sltest.testsequence.setScenarioControlSource('ScenarioTest/Test Sequence',sltest.testsequence.ScenarioControlSource.Workspace);

  2. Создайте переменную в базовом рабочем пространстве, рабочем пространстве модели или словаре данных, чтобы задать активный сценарий с помощью его значения индекса. Например, Active_Scenario_Index = 1;

  3. Запустите модель, которая использует шаги и переходы в активном сценарии.

Чтобы запустить различный сценарий, измените Active_Scenario_Index к желаемому сценарию, например, Active_Scenario_Index = 2, и затем повторно выполненный модель.

Изменять название активного параметра сценария от Active_Scenario_Index к, например, ScenarioIndex, используйте sltest.testsequence.editSymbol('ScenarioTest/Test Sequence',... 'Active_Scenario_Index','Name','ScenarioIndex');

и затем создайте ScenarioIndex переменная в базовом рабочем пространстве. Используйте Scenario_Index = 2 чтобы установить переменную запускать сценарий, идентифицированный индексом 2, и затем, запускают модель.

Запустите сценарии Используя итерации

Можно использовать итерации, чтобы запустить несколько сценариев в одном тесте. Следующие шаги используют ту же модель, блок Test Sequence и сценарии, заданные выше.

1. Настройте тестовый файл, тестовый набор и тест.

tf = sltest.testmanager.TestFile('Scenario Iterations Test');
ts = getTestSuites(tf);
tc = createTestCase(ts,'simulation','Sim Iterations');

2. Установите модель и тестовую обвязку для теста.

setProperty(tc,'Model','HeatPumpScenario1');
setProperty(tc,'HarnessOwner','HeatPumpScenario1/Controller','HarnessName','ScenarioTest');

3. Получите имена сценариев в блоке Test Sequence.

tseq_block = 'ScenarioTest/Test Sequence'; 
scenarioNames = sltest.testsequence.getAllScenarios(tseq_block);

4. Установите блок Test Sequence и сценарий по умолчанию для теста.

setProperty(tc,'TestSequenceBlock',tseq_block);
setProperty(tc,'TestSequenceScenario','FirstScenario');

5. Используйте цикл, чтобы создать итерации, присвоить сценарий каждой итерации и добавить итерации в тест.

for i = 1:numel(scenarioNames)
   testItr = sltestiteration;
   setTestParam(testItr,'TestSequenceScenario',scenarioNames{i});
   addIteration(tc,testItr);
end

6. Запустите тест.

run(tc);

Закройте тестовую обвязку и модель

sltest.harness.close('HeatPumpScenario1/Controller','ScenarioTest');
close_system('HeatPumpScenario1',0);

Смотрите также

| | | | | |

Похожие темы