2

我有一个使用 Selenium 用 PHPUnit 编写的 PHP 项目。

项目结构如下: PHPProjectName

  • 源文件
    • (不包含任何东西)
  • 硒测试文件
    • 包含我所有的硒测试 php 文件 - 扩展类 PHPUnit_Extensions_SeleniumTestCase
  • 包含路径
    • c:\程序文件\PHP
    • c:\程序文件\PHP\PEAR\PHPUnit

然后我通过运行 java -jar selenium-server-standalone-2.24.1.jar 手动启动 Selenium 服务器

执行我所有 selenium 测试 php 文件的 php 脚本工作正常。

但现在我想使用 Jenkins 作为测试管理工具,在这个文件夹中构建和执行我的 PHPunit 测试。我想步骤是:

  • 安装詹金斯
  • 为 PHPunit 测试编写构建脚本
  • 通过Jenkins执行构建脚本

步骤是否正确?有人做过或知道如何设置吗?

非常感谢,

4

3 回答 3

0

我已经在各种平台上做过很多次了。您的步骤通常是正确的并且应该可以工作,但是管理服务器并不总是那么简单。Selenium RC 服务器如果打开时间过长会变得不稳定,因此您必须以某种方式对其进行管理。

您可以设置第二个 Jenkins 作业,该作业每天运行一到两次来重置您的服务器。然而,更好的选择是编写一个简单的测试框架,关闭所有打开的服务器,然后在运行测试之前启动一个新的服务器实例。当然,您也可以使用 cron 作业来重置服务器,但如果您安装了 Jenkins,则通过 jenkins 作业执行此操作会更容易。

最好的选择当然是切换到 Webdriver,但这可能需要一些工作,具体取决于测试的复杂程度。

于 2012-07-20T15:22:27.827 回答
0

我们有与您描述的类似的设置。我们让 Jenkins 运行一个作业来定期重启 Selenium 服务器:

#!/bin/bash
# startselenium.sh: Start Selenium up and also start headless screen.
Xvfb :99 -ac &
export DISPLAY=:99 
java -jar /opt/selenium/selenium-server-standalone-2.19.0.jar &

Sebastian Bergmann 在这里维护了一堆使用 Jenkins 和 PHP 的模板:http: //jenkins-php.org/

包括运行 PHPUnit 所必需的 Ant 脚本(这非常简单,只需调用 PHPUnit):

<target name="phpunit" description="Run unit tests with PHPUnit">
    <exec executable="phpunit" failonerror="true"/>
</target>

以及必要的“phpunit.xml”文件:

<?xml version="1.0" encoding="UTF-8"?>

<phpunit bootstrap="tests/bootstrap.php"
    backupGlobals="false"
    backupStaticAttributes="false"
    strict="true"
    verbose="true">

    <testsuites>
        <testsuite name="ProjectName">
            <directory suffix="Test.php">tests/unit/</directory>
            <directory suffix="Test.php">tests/integration/</directory>
        </testsuite>
    </testsuites>

    <logging>
        <log type="coverage-html" target="build/coverage" title="BankAccount"
            charset="UTF-8" yui="true" highlight="true"
        lowUpperBound="35" highLowerBound="70"/>
        <log type="coverage-clover" target="build/logs/clover.xml"/>
        <log type="junit" target="build/logs/junit.xml" logIncompleteSkipped="false"/>
    </logging>

    <filter>
        <whitelist addUncoveredFilesFromWhitelist="true">
            <directory suffix=".php">src</directory>
            <exclude>
                <file>src/bootstrap.php</file>
            </exclude>
        </whitelist>
    </filter>

</phpunit>
于 2013-05-19T20:32:59.073 回答
0

您必须在 jenkins 中安装 selenium 插件,然后 jenkins 上将自动启动 selenium 服务器,这将创建一个集线器。现在在客户端上,您必须启动一个连接到该集线器的节点。

注意:jenkins selenium 服务器始终与 jenkins 的 selenium 插件版本相同。因此,如果 selenium 插件名称是 selenium 插件 3.1.0,那么它在 selenium 服务器 3.1.0 上运行。

安装 jenkins selenium 插件后,您可以找到一个新的 selenium grid 选项,点击它,您将获得更多信息:

在此处输入图像描述

在此处输入图像描述

现在你必须像这样启动一个 jenkins selenium 独立服务器:

Windows(创建一个包含以下内容的 .bat 文件并执行它,相应地更改相关部分):

start java -jar -Dwebdriver.gecko.driver="C:\Webdrivers\GeckoDriver\geckodriver.exe" -Dwebdriver.chrome.driver="C:\Webdrivers\ChromeDriver\chromedriver.exe" selenium-server-standalone-<VERSION>.jar -role node -hub http://<YOUR_JENKINS_MACHINE_IP>:<PORT>/grid/register

就我而言,我使用了:

start java -jar -Dwebdriver.gecko.driver="C:\Webdrivers\GeckoDriver\geckodriver.exe" -Dwebdriver.chrome.driver="C:\Webdrivers\ChromeDriver\chromedriver.exe" selenium-server-standalone-3.1.0.jar -role node -hub http://172.25.201.100:4444/grid/register

确保将 geckodriver 和 chromedriver 的路径更正到它们的实际位置。

现在节点应该连接到集线器,您可以开始测试。

更多信息: https ://github.com/SeleniumHQ/selenium/wiki/Grid2

于 2017-03-09T08:47:14.270 回答