【问题标题】:Automate Selenium tests on TeamCity Continuous Integration server在 TeamCity 持续集成服务器上自动化 Selenium 测试
【发布时间】:2011-06-29 16:38:59
【问题描述】:

我有一个 Visual Studio 解决方案,其中包括一个具有 Selenium 测试的测试项目。

(我已经有一个由版本控制签入(Mercurial)触发的编译构建)

但我想要一个单独的(每晚)构建配置来运行 Selenium 测试,最好是在 MSTest 下。

我假设我需要 Selenium Server 来做这个?如果是这样,在运行测试之前启动它的最佳方法是什么?我应该从 MSBuild 脚本 执行此操作,还是使用 Team City 本身的 Build Step?我是否需要首先启动 Cassini\WebDev.WebServer 以便运行以下命令:

selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://localhost:49192/");

?

我有一个安装了 TeamCity 6.5.1 的构建服务器。 我已经安装了 VS2010。

肯定有人这样做了!在这里急需一些帮助。如果有人可以提供任何示例,将不胜感激。

【问题讨论】:

    标签: selenium continuous-integration teamcity


    【解决方案1】:

    我正要在我们的 TeamCity Server 中设置 Selenium 测试,我还在用谷歌搜索。 这些是我发现有趣的页面(除了您的 StackOverflow 问题):

    Regression testing for any web application with TeamCity, Selenium, and JUnit

    Selenium browser UnitTesting from TeamCity

    因此,有一种解决方案可以将使用 Selenium IDE 记录的 html 文件转换为 Java,以便在 TeamCity 中使用 JUnit 运行,另一种方法是在 C# 中创建测试脚本。

    而这个话题,"Running Selenium Tests through Teamcity, can it be done?" 描述了将构建代理作为服务运行时出现的问题......我希望我可以继续将代理作为服务运行。

    【讨论】:

      【解决方案2】:

      我们使用 Selenium 对我们公司的外部网站进行夜间测试。为此,我们使用 Selenium RC 并动态创建测试套件。

      我们的流程,看起来比罗斯的复杂,是这样的:

      1. 在 TeamCity 服务器上安装 Selenium RC
      2. 使用Firefox IDE plugin 创建测试
      3. 创建一个网页,该网页生成一个测试套件 html 文件,其中包含指向某个 Web 可访问文件夹中所有测试的链接(例如 http://www.mysite.com/selenium/generateTests.aspx
      4. 在 TeamCity 中创建一个 Powershell 构建步骤,运行将套件和相应测试下载到构建服务器的脚本
      5. 添加“XML 报告处理”构建功能以扫描测试结果。这使 TeamCity 能够告诉您测试结果。

      在 powershell 脚本中:

      1. 执行 Selenium RC 运行时,输入以下载的测试套件为目标,以及哪个 url 将成为基本 url。 [*1]
      2. 使用 XSLT 将输出转换为 NUnit 格式 [*2]

      [*1]java -jar C:\Selenium\selenium-remote-control-1.0.3\selenium-server-1.0.3\selenium-server.jar -log C:\Selenium\www.mysite.com\selenium-log.log -userExtensions 'user-extensions.js' -firefoxProfileTemplate 'Selenium FireFox Profile' -htmlSuite *firefox http://www.mysite.com C:\Selenium\www.mysite.com\generated\GeneratedSuite.htm C:\Selenium\www.mysite.com\TestResults.html

      [*2]nxslt3 $seleniumXmlTestReportPath nunit.xslt -o $nunitReportPath baseUrl=$testBaseUrl

      【讨论】:

      【解决方案3】:

      我们使用 TeamCity 来构建和测试我们基于 C# 的 Web 应用程序。我们一直运行 Selenium 服务器,使用 Java service launcher 来启动它。测试连接到localhost,就像您在问题中显示的那样。

      我们使用 TeamCity 的“NAnt Runner”来启动测试作业,并使用 NAnt 的 <nunit2> 任务在 NUnit 的控制下运行测试。因为我们这样做,NUnit 会查找并运行任何带有 [Test] 属性注释的公共方法 - 这是一个非常简单、非常强大的工具。

      这种设置非常适合我们。

      【讨论】:

      • 您如何使用这种方法构建您的测试?是通过 Firefox IDE 插件,还是在 C# 代码中?我还没有研究如何使用 C# 测试 javascript 函数等,你会这样做吗?
      • 我们手工编写自己的 C# 代码。我们尝试在 Selenium IDE 中构建一些测试并将它们导出为 C# 代码,但这有点难看,并没有为我们节省太多时间。
      • 我们不直接通过 Selenium 测试 JavaScript 函数,因为我们没有将它用于单元测试,但您可以使用 GetEval() 方法。
      • 谢谢! Mayby 我将不得不查看文档以了解它是如何完成的。 :-) 现在我可以理解 RC 是如何工作的,但不是 C# 代码版本...
      • 我们终于可以实现 Selenium C# 测试了。 :-) 但是我们使用内置的 NUnit 运行程序而不是您指出的 NAnts 和 nunit2 任务。你为什么选择它,而不是 NUnit runner?
      【解决方案4】:

      将它与 NUnit 或其他测试运行程序集成。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-09
        • 1970-01-01
        • 1970-01-01
        • 2014-03-15
        相关资源
        最近更新 更多