【问题标题】:Running specific profile from command line in Specflow C#在 Specflow C# 中从命令行运行特定配置文件
【发布时间】:2020-12-10 21:59:12
【问题描述】:

我一直在使用 PHP Behat 进行大量工作,并且正在尝试使用 specflow 在 C# 中模拟同样的事情。我遇到的问题之一是我想对多个(50 多个)网站使用相同的测试,基本上是在命令行中推送一个参数并告诉它要去哪个网站。
在 Behat 中,我会使用 Behat.yml,设置多个配置文件,其格式类似于:

网站A: 网址:whatever.com 网站B: 网址:blabla.com

然后在命令行中指定我想要的配置文件“behat -p websiteA”,并基于此我有一个函数使用我的特定网站的 url。

我对 C# 和 specflow 的一切都很陌生,所以我想知道如何在 specflow 中获得这个解决方案。到目前为止,我设法创建了一个在命令行中使用“dotnet test”运行的基本场景。

我也在使用硒。

非常感谢!

【问题讨论】:

  • 您能否edit 您的问题包括您如何从命令行运行 SpecFlow 测试?
  • 你考虑过使用环境变量吗? - 编写测试代码以从环境变量中读取,然后在命令行中设置变量然后启动 dotnet 测试?例如命令行:Set "MyVar_GoHere=WebsiteA" && dotnet test ...
  • @gregBurghardt 目前我只是在命令行中使用“dotnet test”运行,如帖子中所述。\
  • @RichEdwards 我正在尝试更多的硬编码框架方法。我注意到在 C# 中有一个配置文件,而 Specflow 有某种形式的配置文件。但我不想为每个网站都创建一个文件,因为我有很多。
  • 嗨,Alex,有一种方法可以使用构建配置名称作为驱动预构建配置文件的输入变量。我们用它在不同的环境中拆分我们的测试,并获得不同的变量,如帐户和密码。听起来你想回答什么? - 不用担心,如果它不适合你,我不会发布 :-)

标签: c# selenium automation specflow


【解决方案1】:

这不是您要求的解决方案(即不使用 specflow 配置文件),但作为切换网站的通用 c# 方法,您可以使用构建配置选项。

在构建 > 配置管理器中,您可以为每个环境/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 是对解决方案中项目的引用。都可以复制+粘贴。

添加后,您可以创建代码来读取和查看运行时设置,以根据需要创建/设置变量。

我们的方法(我相信还有其他方法)是创建一个 powershell 脚本,该脚本将采用该配置名称并将我们的设置文件构建为项目的 预构建事件

您可以看到 powershell 的输入是$(ConfigurationName)。此脚本的内容受限于您的想象力:-)

对我们来说,这特别有用,因为我们必须从每个环境的秘密管理器中获取密码和其他 API 密钥。它将创建一个本地 .json 文件,其中包含我们运行测试所需的一切。然后,框架只需要知道一个文件,它在 CI 管道中运行也一样好。

最后 - 在运行 dotnet test 时,您使用 -c 并将您想要的构建传递给它 (options are here):

-c|--configuration <CONFIGURATION>

定义构建配置。默认值为 Debug,但您的 项目的配置可能会覆盖此默认 SDK 设置。

【讨论】:

    猜你喜欢
    • 2016-07-18
    • 2014-10-18
    • 1970-01-01
    • 2015-08-02
    • 2017-08-25
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多