运行 Specflow C# 命令行中的特定配置文件
Running specific profile from command line in Specflow C#
我一直在与 PHP Behat 合作,我正在尝试使用 specflow 在 C# 中模拟同样的事情。我 运行 遇到的问题之一是我想对多个 (50+) 网站使用相同的测试,基本上是在命令行中推送一个参数并告诉它去哪个网站。
在 Behat 中,我会使用 Behat.yml,设置多个配置文件,格式类似于:
网站A:
url: whatever.com
网站B:
url: blabla.com
然后在命令行中指定我想要的配置文件“behat -p websiteA”,并基于此我有一个函数使用 url 用于我的特定网站。
我对 C# 和 specflow 的一切都很陌生,所以我想知道如何在 specflow 中使用这个解决方案。到目前为止,我设法创建了一个基本场景,我 运行 在命令行中使用“dotnet test”。
我也在使用硒。
非常感谢!
这不是您要求的解决方案(即不使用 specflow 配置文件),但作为切换网站的通用 c# 方法,您可以使用构建配置选项。
在构建 > 配置管理器中,您可以为每个 environment/URL 创建新的配置文件。展开活动解决方案配置,您可以创建新的:
你说你有 50 个网站,因为这只是一个驱动程序,同样的信息可以通过编辑你的解决方案 (.sln) 文件来控制:
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Demo|Any CPU = Demo|Any CPU
Dev|Any CPU = Dev|Any CPU
Prod|Any CPU = Prod|Any CPU
*...etc*
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C634C2D6-7FB9-4B47-923F-9E8634843928}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C634C2D6-7FB9-4B47-923F-9E8634843928}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C634C2D6-7FB9-4B47-923F-9E8634843928}.Demo|Any CPU.ActiveCfg = Demo|Any CPU
*...etc*
GUID 是对解决方案中项目的引用。都是copy+paste-able.
添加这些后,您可以创建代码来根据需要读取和查看 运行 时间设置 create/set 变量。
我们的方法(我相信还有其他方法)是创建一个 powershell 脚本,该脚本将采用该配置名称并将我们的设置文件构建为 pre-build 事件 对于项目:
您可以看到 powershell 的输入是 $(ConfigurationName)
。此脚本的内容受限于您的想象力:-)
对我们来说,这特别有用,因为我们必须从每个环境的秘密管理器中获取密码和其他 API 密钥。它会创建一个本地 .json 文件,其中包含我们 运行 测试所需的一切。然后,框架只需要知道一个文件,它在 CI 管道中也能正常工作 运行ning。
最后 - 当谈到 运行ning dotnet test
时,你使用 -c
并传递你想要的构建 (options are here):
-c|--configuration <CONFIGURATION>
Defines the build configuration. The default value is Debug, but your
project's configuration could override this default SDK setting.
我一直在与 PHP Behat 合作,我正在尝试使用 specflow 在 C# 中模拟同样的事情。我 运行 遇到的问题之一是我想对多个 (50+) 网站使用相同的测试,基本上是在命令行中推送一个参数并告诉它去哪个网站。
在 Behat 中,我会使用 Behat.yml,设置多个配置文件,格式类似于:
网站A: url: whatever.com 网站B: url: blabla.com
然后在命令行中指定我想要的配置文件“behat -p websiteA”,并基于此我有一个函数使用 url 用于我的特定网站。
我对 C# 和 specflow 的一切都很陌生,所以我想知道如何在 specflow 中使用这个解决方案。到目前为止,我设法创建了一个基本场景,我 运行 在命令行中使用“dotnet test”。
我也在使用硒。
非常感谢!
这不是您要求的解决方案(即不使用 specflow 配置文件),但作为切换网站的通用 c# 方法,您可以使用构建配置选项。
在构建 > 配置管理器中,您可以为每个 environment/URL 创建新的配置文件。展开活动解决方案配置,您可以创建新的:
你说你有 50 个网站,因为这只是一个驱动程序,同样的信息可以通过编辑你的解决方案 (.sln) 文件来控制:
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Demo|Any CPU = Demo|Any CPU
Dev|Any CPU = Dev|Any CPU
Prod|Any CPU = Prod|Any CPU
*...etc*
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C634C2D6-7FB9-4B47-923F-9E8634843928}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C634C2D6-7FB9-4B47-923F-9E8634843928}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C634C2D6-7FB9-4B47-923F-9E8634843928}.Demo|Any CPU.ActiveCfg = Demo|Any CPU
*...etc*
GUID 是对解决方案中项目的引用。都是copy+paste-able.
添加这些后,您可以创建代码来根据需要读取和查看 运行 时间设置 create/set 变量。
我们的方法(我相信还有其他方法)是创建一个 powershell 脚本,该脚本将采用该配置名称并将我们的设置文件构建为 pre-build 事件 对于项目:
您可以看到 powershell 的输入是 $(ConfigurationName)
。此脚本的内容受限于您的想象力:-)
对我们来说,这特别有用,因为我们必须从每个环境的秘密管理器中获取密码和其他 API 密钥。它会创建一个本地 .json 文件,其中包含我们 运行 测试所需的一切。然后,框架只需要知道一个文件,它在 CI 管道中也能正常工作 运行ning。
最后 - 当谈到 运行ning dotnet test
时,你使用 -c
并传递你想要的构建 (options are here):
-c|--configuration <CONFIGURATION>
Defines the build configuration. The default value is Debug, but your project's configuration could override this default SDK setting.