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 运行可执行文件-不确定我做错了啥
Swift 测试在本地通过,但在 Travis-CI 上构建失败