繁体   English   中英

TeamCity成功运行bat文件,但未运行硒测试

[英]TeamCity running bat file sucessfully but did not run the selenium tests

我在TeamCity上遇到问题,该问题运行我创建的用于运行SpecFlow测试的批处理文件。

批处理文件运行SpecRun.exe ,我应该看到的是Chrome弹出并开始运行测试。 (这不是本地应用程序,因此不需要运行IIS等。)测试是针对站点运行的硒测试。 从命令行运行批处理文件时,所有工作均按预期方式进行。

我在TeamCity中有一个构建步骤,该步骤通过命令行构建步骤运行批处理文件。 但是,当我运行构建步骤时,我在日志中获得Success ,告诉我批处理文件已经运行,但是没有弹出Chrome窗口,也没有实际运行测试。

我的批处理文件的内容是:

cd C:\Users\carlb\Documents\Visual Studio 2015\Projects\SITS_Automation\packages\SpecRun.Runner.1.2.0\tools
start SpecRun.exe run ../../SITS_Automation/default.srprofile /report:../../SITS_Automation/TestResults/SITS_Report.html

批处理代码中的错误可能导致硒测试未完成?

启动命令将启动SpecRun和其他进程中的其他程序,因此不会等待其完成。 删除开始或向其添加/ WAIT参数。

设置当前目录的路径包含一个空格。

因此,您需要

cd "C:\Users\carlb\Documents\Visual Studio 2015\Projects\SITS_Automation\packages\SpecRun.Runner.1.2.0\tools"

甚至更好

cd /D "%USERPROFILE%\Documents\Visual Studio 2015\Projects\SITS_Automation\packages\SpecRun.Runner.1.2.0\tools"

可以通过运行cmd /?在最后一页输出中读取它cmd /? 在命令提示符窗口中,字符串中包含空格或以下字符之一( &()[]{}^=;!'+,`~必须用双引号引起来。

使用选项/D命令CD还可以处理到当前驱动器以外的驱动器上的目录的切换。 并且预定义的环境变量USERPROFILE包含当前用户的配置文件目录的路径。

如果SpecRun是一个控制台应用程序,请删除命令start ,以从同一命令进程中运行该应用程序,并暂停批处理文件的执行,直到该控制台应用程序终止自身为止。

但是,如果SpecRun是GUI应用程序,则使用

start "SpecRun" /wait SpecRun.exe run ..\..\SITS_Automation\default.srprofile /report:..\..\SITS_Automation\TestResults\SITS_Report.html

双引号中的"SpecRun"只是窗口标题字符串,对于空字符串也可以是"" ,也可以在此命令行中完全省略,因为双引号中没有其他参数。 如果起始行上的任何字符串都用双引号引起来,则可选的标题通常是必需的参数,因为命令启动通常将第一个双引号字符串解释为标题字符串。 因此,如果这只是一个空字符串,则始终在开始使用时指定标题字符串会更安全,以避免出现意外情况。

您还应该在目录或文件的路径中使用\\而不是/ ,因为反斜杠是Windows上的目录分隔符,而不是Unix / Linux / Mac上的正斜杠。 执行批处理文件时,命令处理器cmd.exe将文件和目录路径中的反斜杠替换为正斜杠。 但是,为Windows指定具有正确的目录分隔符的文件和文件夹路径会更好,除非启动的应用程序需要正斜杠,因为(严重)是从* nix移植到Windows。

为了了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。

  • cd /?
  • start /?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM