.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+ 的开发人员