У меня есть несколько модульных тестов в проекте, которые зависят друг от друга. После запуска одного теста я фиксирую результат, ожидаю его синхронизации в другой системе и выполняю другой тест, используя выходные данные первого теста. Я пытаюсь добиться этого с помощью лазурного конвейера. Я создал 3 задания агента - в задании A я запускаю Unit Test1 и создаю выходную переменную, которая передается переменной в задании C, задание B - это сервер без агента, который задерживается на 1 минуту между этими двумя агентами. Я использовал overrideTestrunParameters: '-sauce2 $ (auce5)', чтобы переопределить параметры для второго теста, но я получил ошибку ниже при передаче параметров второй задаче агента.
[предупреждение] Невозможно проанализировать строку параметров переопределения запуска: -sauce2 раздавленные помидоры
[ошибка] SetupPhase.Run: исключение во время обновления параметров запуска: System.FormatException: ошибка при переопределении параметров тестового запуска. Пожалуйста, проверьте указанные параметры тестового запуска.
в Microsoft.VisualStudio.TestService.SettingsManager.OverrideParamsSettingsProcessor.GetOverrideParameters (String overrdeParametersString) в Microsoft.VisualStudio.TestService.SettingsManager.OverrideParamsSettingsProcessor.UpdateSettingsWithParameters (настройки XDocument) в Microsoft.VisualStudio.TestService.SettingsManager.CommonSettingsManager.UpdateCommonSettings (InputDataContract inputDataContract, SettingsModifier settingsModifier ) в Microsoft.VisualStudio.TestService.SettingsManager.SettingsManager.UpdateSettingsAsRequired (InputDataContract inputDataContract) в MS.VS.TestService.VstestConsoleAdapter.SetupPhase.Run (VstestConsoleRunContextcellationTestRunoktexten)
[error] Обновление настроек завершилось ошибкой: ошибка при переопределении параметров тестового прогона. Пожалуйста, проверьте указанные параметры тестового запуска.
TestRunParameters:
<RunSettings>
<TestRunParameters>
<Parameter name="sauce" value="chilly" />
<Parameter name="sauce1" value="chilly1" />
<Parameter name="sauce2" value="chilly2" />
</TestRunParameters>
Модульные тесты:
[Test]
public void UnitTest1()
{
string sauce = TestContext.Parameters["sauce"];
string sauce1 = TestContext.Parameters["sauce1"];
TestContext.Progress.WriteLine(sauce);
TestContext.Progress.WriteLine(sauce1);
//creating outpute variable in azure
TestContext.Progress.WriteLine("##vso[task.setvariable variable=sauce4;Secret=false;isOutput=true;]crushed tomatoes");
}
[Test]
public void UnitTest2()
{
string sauce2 = TestContext.Parameters["sauce2"];
TestContext.Progress.WriteLine($"sauce2: {sauce2}");
}
Конвейер Azure.yaml:
jobs:
- job: A
pool:
name: New Agent Pool
demands:
- msbuild
- visualstudio
- vstest
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Debug'
sauce: 'tomato'
sauce1: 'pepper'
steps:
- task: NuGetCommand@2
displayName: 'NuGet restore'
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: VSTest@2
displayName: 'Unit Test1'
inputs:
testAssemblyVer2: |
**\$(BuildConfiguration)\*Test*.dll
!**\obj\**
testFiltercriteria: 'Name=UnitTest1'
runSettingsFile: SeleniumTest.ABC/Test.runsettings
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
overrideTestrunParameters: '-sauce $(sauce)'
name: 'OutputVar'
- job: B
dependsOn:
- A
pool: server
steps:
- task: Delay@1
inputs:
delayForMinutes: '1'
- job: C
dependsOn:
- A
- B
pool:
name: New Agent Pool
demands:
- msbuild
- visualstudio
- vstest
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Debug'
sauce2: $[dependencies.A.outputs['outputVar.sauce4']]
steps:
- task: NuGetCommand@2
displayName: 'NuGet restore'
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
# Write your PowerShell commands here.
Write-Host run time value
Write-Host sauce2 = $(sauce2)
- task: VSTest@2
displayName: 'Unit Test2'
inputs:
testAssemblyVer2: |
**\$(BuildConfiguration)\*Test*.dll
!**\obj\**
testFiltercriteria: 'Name=UnitTest2'
runSettingsFile: SeleniumTest.ABC/Test.runsettings
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
overrideTestrunParameters: '-sauce2 $(sauce2)'
condition: succeededOrFailed()
Я мог видеть, что в задаче Powershell печатается новый параметр времени выполнения, но он не работает в тестовой задаче VS. Может ли кто-нибудь посоветовать мне, как фиксировать переменные времени выполнения в задаче VSTest и переходить к другой задаче VSTest в конвейерах Azure.