.net 核心中的 SpecFlow+ 配置文件转换替代方案?
SpecFlow+ config file transformation alternatives in .net core?
我想要 运行 使用针对特定环境的一组配置设置进行一些 SpecFlow+ 测试,然后可以选择 运行针对不同的一组设置进行相同的测试不同的环境。
借助 .net 框架中的 SpecFlow+,这可以通过将 App.config
文件转换为特定于环境的 .srprofile
文件来实现。然后,您可以将 .runsettings
文件连接到 .srprofile
文件,并通过更改 运行 中的测试 运行 设置来无缝更改要 运行 测试的环境=].
.net core 中是否有等效的解决方案?
我能想到的唯一解决方法是为每个环境使用不同的构建配置,然后在代码中使用 #if DEBUG
样式的预处理器指令。然后可以加载特定的 appsettings.json 文件或指向特定的 Azure 应用程序配置设置。然后,我可以在 运行 进行测试时在我的管道中设置 BuildConfiguration。
我为您的用例创建了一个新示例。您可以在 https://github.com/SpecFlowOSS/SpecFlow.Plus.Examples/tree/master/MultipleBrowserAgainstDifferentEnvironments
找到它
您可以在Default.srProfile中定义哪个浏览器用于哪个环境。
基础 URL 通过 __BaseUrl
环境配置。
这是一个以 google.com 作为基地址使用 Firefox 的例子。
<Target name="Firefox-COM">
<DeploymentTransformationSteps>
<EnvironmentVariable variable="Test_Browser" value="Firefox" />
<EnvironmentVariable variable="__BaseUrl" value="https://www.google.com" />
</DeploymentTransformationSteps>
</Target>
如果您需要配置更多值,只需添加新的环境变量并使用简单的 Environment.GetEnvironmentVariable
(https://github.com/SpecFlowOSS/SpecFlow.Plus.Examples/blob/master/MultipleBrowserAgainstDifferentEnvironments/TestApplication.UiTests/Drivers/ConfigurationDriver.cs#L9).
获取它们的值
您还可以编写多个不同的 srProfile
- 文件,如果您 运行 在本地或 CI 中进行测试,则可以使用不同的 runsettings files 进行不同的设置管道。
如果环境变量不够用或处理起来太多,我建议只使用一个环境变量,在其中存储文件名。
在您的绑定中,您可以使用此文件名来读取它。
希望这个例子能帮助您实现您的要求。
完全披露:我是 SpecFlow 和 SpecFlow+ 的开发人员
我想要 运行 使用针对特定环境的一组配置设置进行一些 SpecFlow+ 测试,然后可以选择 运行针对不同的一组设置进行相同的测试不同的环境。
借助 .net 框架中的 SpecFlow+,这可以通过将 App.config
文件转换为特定于环境的 .srprofile
文件来实现。然后,您可以将 .runsettings
文件连接到 .srprofile
文件,并通过更改 运行 中的测试 运行 设置来无缝更改要 运行 测试的环境=].
.net core 中是否有等效的解决方案?
我能想到的唯一解决方法是为每个环境使用不同的构建配置,然后在代码中使用 #if DEBUG
样式的预处理器指令。然后可以加载特定的 appsettings.json 文件或指向特定的 Azure 应用程序配置设置。然后,我可以在 运行 进行测试时在我的管道中设置 BuildConfiguration。
我为您的用例创建了一个新示例。您可以在 https://github.com/SpecFlowOSS/SpecFlow.Plus.Examples/tree/master/MultipleBrowserAgainstDifferentEnvironments
找到它您可以在Default.srProfile中定义哪个浏览器用于哪个环境。
基础 URL 通过 __BaseUrl
环境配置。
这是一个以 google.com 作为基地址使用 Firefox 的例子。
<Target name="Firefox-COM">
<DeploymentTransformationSteps>
<EnvironmentVariable variable="Test_Browser" value="Firefox" />
<EnvironmentVariable variable="__BaseUrl" value="https://www.google.com" />
</DeploymentTransformationSteps>
</Target>
如果您需要配置更多值,只需添加新的环境变量并使用简单的 Environment.GetEnvironmentVariable
(https://github.com/SpecFlowOSS/SpecFlow.Plus.Examples/blob/master/MultipleBrowserAgainstDifferentEnvironments/TestApplication.UiTests/Drivers/ConfigurationDriver.cs#L9).
您还可以编写多个不同的 srProfile
- 文件,如果您 运行 在本地或 CI 中进行测试,则可以使用不同的 runsettings files 进行不同的设置管道。
如果环境变量不够用或处理起来太多,我建议只使用一个环境变量,在其中存储文件名。 在您的绑定中,您可以使用此文件名来读取它。
希望这个例子能帮助您实现您的要求。
完全披露:我是 SpecFlow 和 SpecFlow+ 的开发人员