#powershell #powershell-2.0 #powershell-3.0
#powershell #powershell-2.0 #powershell-3.0
Вопрос:
- Я хочу выполнить тестовые примеры с помощью команд, использующих сценарии PowerShell.
- Сколько раз я хочу выполнить эти тесты, зависит от
$HowManyTimes
переменной. - Вполне возможно, что я получу результат успеха раньше
$HowManyTimes
, например, на данный момент я установил его равным 3, но что, если я получу успешный результат во 2-й попытке? - Я хочу проигнорировать этот конкретный тестовый пример, который был пройден, и перейти к выполнению нового тестового примера. Я скопировал вывод команды в
$OutPut
переменную, которая выглядит следующим образомНе Imp Информация
Ошибки, сбои и предупреждения
Сбой: UnitTestProject1.TestClass.AddTest() Добавить тест()
Ожидаемый: 30
Но было: 45
Не Imp Информация
Краткое описание тестового запуска
Общий результат: сбой
Не Imp Информация
Ниже приведен сценарий, который я написал.
$XMLfile = 'Results.xml'
[XML]$Results = Get-Content $XMLfile
$HowManyTimes = 3 # How many time the script should run.
$TestCaseToExecute
$OutPut # Storing the result of command
$StopOperation = 0
for ($i=1; $i -le $HowManyTimes; $i )
{
#I am reading the xml file which can have n test cases.
#For each loop on all the test case which are failed.
foreach($Result in $Results.'test-run'.'test-suite'.'test-suite'.'test-suite'.'test-suite'.'test-case' | Where-Object {$_.result -eq "Failed"})
{
Write-Host "Failed Test Case -- fullname :" ($Result).fullname
$TestCaseToExecute = ($Result).fullname
Write-Host " Executing ====>" $TestCaseToExecute
Write-Host "-----------------------------------------"
$OutPut = nunit3-console.exe UnitTestProject1binDebugUnitTestProject1.dll --test=$TestCaseToExecute | Out-String
if($OutPut -Like "*Overall result: Failed*"){
Write-Host "If Block"
continue
}else{
Write-Host "else block Stop : "
break
}
}
}
Пожалуйста, дайте мне знать, какие изменения мне нужно внести для достижения этой цели.
Комментарии:
1. Здесь недостаточно для тестирования /dev, но похоже, что вам нужны некоторые варианты операторов Break и / или continue , выполняемых условно. У меня возникает соблазн сказать что-то вроде
if($OutPut -Like "*Overall result: Failed*"){ Continue }
, но опять же недостаточно информации для работы над этим. Кроме того, похоже, что вы никогда не добьетесь успеха из-заWhere{}
…2. @Steven
Where{}
вступает в игру только тогда, когда я считываю значения из XML. Как только у меня появятся эти значения, я скопировал их$Result
. Теперь у меня есть список, в$Result
котором я выполняю один за другим, используя для каждого цикла. Если какой-либо из элементов списка получил пропуск, я хочу остановить выполнение — только для этого конкретного элемента.3. Определенно звучит так
Continue
, что это немедленно приведет вас к следующей итерации цикла. Итак, предполагая, что вы размещаетеContinue
правильно, он эффективно пропускает4. Я добавил операторы
Continue
andBreak
в свой сценарий. это нарушение для всех компонентов в$Result
том, что я хочу, для отдельного5. Вы должны сделать их условными. Добавьте обновленный код к вопросу…