18

我正在使用 Codeception 创建我的测试(虽然我是初学者,正在学习)。这包括目前的验收和单元测试。

我想将我的 repo 添加到 Travis CI,这样我就可以在每次提交后自动化测试过程并放置 build-status 标记。

我想问一下;

  1. Travis-CI 可以运行代码接收测试吗?
  2. Travis-CI 可以模拟浏览器运行代码接收验收测试吗?
  3. 如果两个答案都不是,还有其他 CI 工具可以吗?

谢谢你。

4

3 回答 3

9

是的,可以在 Travis CI 上运行 Codeception 测试,包括使用 WebDriver 运行的验收测试。

可以在 Travis 上使用真正的浏览器运行测试,但使用无头浏览器是最简单的,因为 Travis 是在无头机器上运行的。PhantomJS非常适合这一点,它预装了 Travis CI 的构建引导程序。

要使用 PhantomJS 运行测试,您需要在.ymlCodeception 配置文件中像这样配置 WebDriver 模块:

modules:
    config:
        WPWebDriver:
            url: 'http://127.0.0.1:8888'
            browser: phantomjs

网址很重要。我发现尝试使用localhost127.0.0.1不是行不通。此外,如果您不小心遗漏了http://,那也不起作用。您几乎可以使用任何8***端口,因为它们中的大多数都是开放的,但当然您需要在该端口上运行一个 Web 服务器来提供静态文件或运行您的 PHP 应用程序。我发现最简单的方法是使用 PHP 的内置网络服务器。

您的.travis.yml文件可能如下所示:

# Travis CI configuration file.

language: php

php:
    - 5.6
    - 7.0

before_script:
    # Start up a web server.
    - php -S 127.0.0.1:8888 -t /path/to/web/root >/dev/null 2>&1 &
    # Start up the webdriver.
    - phantomjs --webdriver=4444 >/dev/null 2>&1 &
    # Install Codeception.
    # Doing this last gives the webdriver and server time to start up.
    - composer install --prefer-source

script:
    - vendor/bin/codecept run

您当然需要将 Codeception 添加到项目composer.json文件中:

composer require --dev codeception/codeception

您还需要将path/to/web/root上面的路径更改为您希望服务器的文档根目录所在的目录。

如果您想查看针对 WordPress 运行 WebDriver 测试的工作演示,可以查看此 GitHub 存储库

于 2016-07-05T13:45:13.333 回答
2

我认为这是可以做到的,但是将所有东西粘合在一起并不适合胆小的人。我认为可以做到的原因是代码接收本身就被 Travis 引用了。请参阅https://travis-ci.org/Codeception/Codeception。我会联系 codeception 的人并询问他们的想法。

或者您可以在构建日志中查看他们是如何执行此操作的,例如: https ://travis-ci.org/Codeception/Codeception/jobs/14432638 看起来他们正在使用下载的独立 selenium 服务器无头运行。

Travis-ci 有一些关于如何运行 GUI 测试的信息。特别是,它们允许您使用酱实验室帐户并从那里运行分布式硒测试。

于 2013-11-24T13:03:34.237 回答
0

我今天遇到了这个问题,我通过将 Codeception 添加到我的composer.json

"require-dev": {
    "codeception/codeception": "^2.1"
},

并在我的.travis.yml

install:
    - composer self-update
    - composer install

before_script:
    - #Code that creates and seeds my database and so on

script: php vendor/codeception/codeception/codecept run
于 2015-09-28T17:12:58.010 回答