如何解决在Specflow C#中从命令行运行特定的配置文件
我已经在PHP Behat上进行了大量工作,并且我正在尝试使用specflow在C#中模拟相同的东西。我遇到的问题之一是我想对多个(50+)个网站使用相同的测试,基本上是在命令行中推送一个参数,然后告诉它要访问哪个网站。
在Behat中,我将使用Behat.yml,以类似于以下格式设置多个配置文件:
网站A: 网址:whatever.com 网站B: 网址:blabla.com
然后在命令行中指定我想要的概要文件“ behat -p websiteA”,并基于该概要文件,我具有一个将URL用于特定网站的功能。
我对所有C#和specflow都很陌生,所以我想知道如何在specflow中使用此解决方案。到目前为止,我设法创建了一个在命令行中使用“ dotnet测试”运行的基本方案。
我也在用硒。
非常感谢!
解决方法
这并不是您所要求的解决方案(即不使用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脚本,该脚本将使用该Configuration名称并将我们的设置文件构建为项目的 pre-build event :
您可以看到Powershell的输入是$(ConfigurationName)
。此脚本的内容受您的想象力限制:-)
对于我们来说,这特别有用,因为我们必须从每个环境的秘密管理员那里获取密码和其他API密钥。它将创建一个本地.json文件,其中包含我们运行测试所需的一切。这样,该框架将只需要知道一个文件,并且在CI管道中运行就可以正常工作。
最后-在运行dotnet test
时,您使用-c
并将所需的构建传递给它(options are here):
-c|--configuration <CONFIGURATION>
定义构建配置。默认值为Debug,但是您的 项目的配置可以覆盖此默认的SDK设置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。