Travis-CI 可以运行 Codeception 测试吗?

Posted

技术标签:

【中文标题】Travis-CI 可以运行 Codeception 测试吗?【英文标题】:Can Travis-CI run Codeception tests? 【发布时间】:2013-09-04 16:30:07 【问题描述】:

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

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

我想问一下;

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

谢谢。

【问题讨论】:

【参考方案1】:

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

它是possible to run your tests with a real browser on Travis,但使用无头浏览器是最容易的,因为 Travis 是在无头机器上运行的。 PhantomJS 非常适合这一点,它预装了 Travis CI 的构建引导程序。

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

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

网址很重要。我发现尝试使用localhost 而不是127.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 测试的有效演示,您可以查看this GitHub repo。

【讨论】:

【参考方案2】:

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

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

Travis-ci 拥有some information on how to run GUI tests。特别是,它们允许您使用sauce labs 帐户并从那里运行分布式硒测试。

【讨论】:

【参考方案3】:

我今天遇到了这个问题,我通过将 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

【讨论】:

以上是关于Travis-CI 可以运行 Codeception 测试吗?的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Travis-CI 运行可执行文件-不确定我做错了啥

[travis-ci]自动集成测试

Swift 测试在本地通过,但在 Travis-CI 上构建失败

在对travis-ci的测试期间,它会挂起

如何为我在 Java 上编写的硒测试增加 travis-ci 的超时时间?

如何将 Travis-CI 与 C# 或 F# 一起使用