【发布时间】:2020-08-21 18:18:38
【问题描述】:
我想针对特定环境使用一堆配置设置运行一些 SpecFlow+ 测试,然后可以选择针对不同环境的不同设置运行相同的测试。
使用 .net 框架中的 SpecFlow+,这可以通过将 App.config 文件转换为特定于环境的 .srprofile 文件来实现。然后,您可以将 .runsettings 文件连接到 .srprofile 文件,并通过更改 Visual Studio 中的测试运行设置来无缝更改要运行测试的环境。
.net core 中是否有等效的解决方案?
我能想到的唯一解决方法是为每个环境使用不同的构建配置,然后在代码中使用#if DEBUG 样式预处理器指令。然后可以加载特定的 appsettings.json 文件或指向特定的 Azure 应用程序配置设置。然后我可以在运行测试时在我的管道中设置 BuildConfiguration。
【问题讨论】:
-
环境变量对你有用吗?我们在这个例子中使用它们:github.com/SpecFlowOSS/SpecFlow.Plus.Examples/blob/master/…
-
我相信这个例子需要使用标签来提取环境变量(?)。如果我想运行指向不同配置设置的整个测试套件,我宁愿不向所有测试添加标签。我所追求的灵活性是可以在一个环境(您的建议确实解决)、多个环境(例如测试、沙盒、实时)上运行多个浏览器的测试,并可以选择在这些环境中的特定实例上运行(例如测试 1、测试 2 等)。调试时始终能够在这些实例之间轻松切换。
-
好的,总是使用多个不同的浏览器,并且根据配置,您可以针对一对多环境进行测试。可能由 URL 配置。这是你的情况吗?然后我可以为你创建一个合适的例子。
-
是的,就是这样,配置可能还有其他详细信息,例如 API 端点 URL、数据库连接字符串、用户名等。我一直在尝试使用 Azure 应用程序配置,它允许我提取一堆基于标签(例如测试)的设置,然后我可以通过环境设置将其输入到我的应用程序中。这可以在管道中针对不同的目标进行设置。唯一的缺点是它不适合调试,需要手动更改代码或手动更改环境变量值。
-
您所描述的是 SpecFlow+ Runner 的目标的用例。结合一些部署步骤,您的要求应该是可能的。发布的示例同时使用两者,但方式略有不同。我希望我能在接下来的几天里找到一些时间来创建一个满足您要求的示例。
标签: specflow