标签: codeception

使用 javascript Codeception phpbrowser

长话短说,我有一个 Web 应用程序,其中有一个按钮可以触发 2 个异步 ajax 调用。2 个 ajax 调用使用的参数实际上是应用程序中设置的 JavaScript 变量。当两个 ajax 调用完成后,将使用初始 ajax 调用之一的结果执行第三个 ajax 调用。第三个 ajax 调用完成后,会在内容中添加一个新的 div。

到目前为止,我将 CodeCeption 与 WebDriver 结合使用,其中上述功能可以通过两个简单的操作轻松模拟:

$I->click(button)
$I->waitForElementVisible(newdiv)
Run Code Online (Sandbox Code Playgroud)

我现在尝试使用 PhpBrowser 模拟相同的内容,但我不确定如何解决这个问题:

1.由于PhpBrowser不使用javascript,我如何在2个ajax调用中发送javascript参数?

2.由于PhpBrowser中没有可用的waitforelement函数,我是否需要手动触发所有3个ajax调用?或者PhpBrowser是否能够手动执行两个ajax调用的回调并自动触发第三个?

php codeception

3
推荐指数
1
解决办法
1547
查看次数

无法打开输入文件:bin/codecept

我正在尝试按照此处的步骤在 symfony 3 框架上安装 codeception:

http://codeception.com/for/symfony

当我跑步时

php bin/codecept bootstrap --empty
Run Code Online (Sandbox Code Playgroud)

我收到错误

无法打开输入文件:bin/codecept

我尝试以管理员身份在 Windows 命令行上安装它。

但从输出看来,由于警告,bin 目录中的文件 codecept 未创建:

E:\projektai\php projektai\htdocs\timetracker>composer require codeception/codec
eption --dev
Warning: This development build of composer is over 60 days old. It is recommend
ed to update it by running "C:\ProgramData\Composer\bin\composer.phar self-updat
e" to get the latest version.
Using version ^2.2 for codeception/codeception
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload …
Run Code Online (Sandbox Code Playgroud)

cmd symfony codeception

3
推荐指数
1
解决办法
3906
查看次数

Codeception\Exception\InjectionException :服务 di 未定义,无法从测试访问

测试开始于 \xe4\xb8\x8b\xe5\x8d\x885:45 ...

\n
/usr/local/bin/php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9001 -dxdebug.remote_host=127.0.0.1 /var/www/example/vendor/phpunit/phpunit/phpunit --no-configuration --filter "/(::testMerlinTemplate)( .*)?$/" tests\\jobs\\SettlementJobTest /var/www/example/tests/unit/jobs/SettlementJobTest.php --teamcity\nPHPUnit 7.1.4 by Sebastian Bergmann and contributors.\n\n\nCodeception\\Exception\\InjectionException : Service di is not defined and can't be accessed from a test\n /var/www/example/vendor/codeception/base/src/Codeception/Test/Metadata.php:191\n /var/www/example/vendor/codeception/base/src/Codeception/Test/Unit.php:47\n
Run Code Online (Sandbox Code Playgroud)\n

php phpunit codeception

3
推荐指数
1
解决办法
2614
查看次数

Codeception日期时间错误

我正在尝试学习Codeception并将它与Yii(我也是新手)一起使用.

开箱即用,我在运行测试时遇到了一些问题.我已经浏览了快速入门指南,当我通过终端运行时,我收到此错误:

Codeception PHP Testing Framework v1.6.6
Powered by PHPUnit 3.7.24 by Sebastian Bergmann.

  [Exception]                                                                                                                                         
  DateTime::__construct(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date  
  _default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the tim  
  ezone identifier. We selected 'America/Chicago' for 'CDT/-5.0/DST' instead                                                                          
Run Code Online (Sandbox Code Playgroud)

现在,我正在使用MAMP,并在我的php.ini文件中设置了时区.我也试过在index.php文件中手动设置它_default_timezone_set('America/Chicago');,我仍然得到相同的消息.

当我使用Yii时,我已经尝试为Codeception启用Yii模块,但这似乎没有任何区别.

更新

我已经尝试在非基于yii的项目上安装代码,所以一个直接的网站,我得到与上面完全相同的错误.

php yii codeception

2
推荐指数
1
解决办法
2114
查看次数

在Codeception验收测试中测试图像

我正在为我们的内部CMS设置一系列自动化测试.

在这个时刻,我希望能够测试我们的测试页面中是否有某些图像.

如果图像存在,我可以检查将显示的标题...

$I->see('Image Caption');
Run Code Online (Sandbox Code Playgroud)

...但我真的希望能够检查图像本身的存在......

$I->seeImage('/path_to/image_file.jpg'); // I MADE THAT METHOD UP
Run Code Online (Sandbox Code Playgroud)

......或者至少是img标签......

$I->seeSourceCode('<img src="/path_to/image_file.jpg"'); // I MADE THAT METHOD UP TOO
Run Code Online (Sandbox Code Playgroud)

有谁知道如何做到这一点?

image codeception

2
推荐指数
1
解决办法
3104
查看次数

codeception,cest类和用户步骤

我得到的印象是代码文档已经过时了.

我有Cept文件使用userteps定义文件,我用于登录调用等事情.

由于复杂性,我喜欢使用Cest类,但我不能让他们识别我的Usersteps.这是一个例子:

<?php

/*
 * @guy TestGuy\UserSteps
 */
class ViewPagesCest {

public function testViewCharacter(TestGuy $I) {
    $I->loginToCharacter('admin', 'admin', 'Alice Kepler');

    $target = $I->grabFromRepository('BM2SiteBundle:Character', 'id', array('name' => 'Carol Stanis'));
    $I->amOnPage('/en/character/view/'.$target->getId());
    $I->see($target->getName());
}
Run Code Online (Sandbox Code Playgroud)

}

我当然得到了:

[RuntimeException]调用未定义的方法TestGuy :: loginToCharacter

因为loginToCharacter是在usersteps文件中定义的.与Cept文件相同的东西工作得很好.我错过了什么?

codeception

2
推荐指数
1
解决办法
1281
查看次数

无法在自定义Laravel测试环境中进行身份验证(codeception)

我正在运行Vagrant(宅基地),PHP 5.5.12和Laravel 4.2.我正在尝试配置代码以使用测试环境进行验收测试(在phantomJS上运行).在宅基地上我有两个环境:本地和测试.我小心不要在默认的'testing'环境中加倍,这个环境是为PHPUnit测试保留的.

我的问题是虽然我可以使用Eloquent来实例化用户(并检索它),但我无法对该用户进行任何测试的身份验证.这使我无法运行我的测试套件,其中90%需要用户身份验证.

我在/ etc/nginx/sites-available中定义了两个站点:myapp.app和myapp.test.我将fastcgi_param APP_ENV定义为本地和测试(分别).我还在〜/ .bashrc中指定了APP_ENV,所以echo $ APP_ENV返回'local'.我创建了相应的config/test文件夹,其中包含指向测试数据库的database.php凭据.下面是默认的codeception.yml设置,以及那些被acceptance.suite.yml设置覆盖的设置(这是我专门运行的套件).

我无法在测试环境中进行身份验证.所有尝试这样做都会返回false或null.

codeception.yml

actor: Tester
paths:
    tests: tests
    log: tests/_output
    data: tests/_data
    helpers: tests/_support
settings:
    bootstrap: _bootstrap.php
    colors: true
    memory_limit: 1024M
modules:
    config:
        Db:
            dsn: 'pgsql:host=localhost;dbname=myapp'
            user: 'myapp'
            password: 'myapp'
            dump: tests/_data/dump.sql
Run Code Online (Sandbox Code Playgroud)

acceptance.suite.yml

class_name: AcceptanceTester
modules:
    enabled:
        - Laravel4
        - AcceptanceHelper
        - WebDriver
        - Db
    config:
        WebDriver:
            url: 'http://myapp.test'
            browser: phantomjs
            window_size: 1024x768
        Db:
            dsn: 'pgsql:host=localhost;dbname=myapp_testing'
            user: 'myapp_testing'
            password: 'myapp_testing'
            dump: tests/_data/test-dump.sql
            populate: true
            cleanup: false
Run Code Online (Sandbox Code Playgroud)

此接受帮助程序编译到AcceptanceTester类中,并在需要身份验证的所有Cests上的before过滤器中运行.我在这里测试了User :: create方法的输出,它确实创建了一个我可以访问的用户对象,例如,在login方法中.但是,它不会出现在我的数据库中(从Navicat查看).数据库当前是从test-dump.sql文件填充的,并且只包含没有任何数据的模式.我不确定为什么Eloquent创建方法不会写入数据库,但我最好的猜测是在测试套件运行后数据库正在回滚.

AcceptanceHelper.php

<?php …
Run Code Online (Sandbox Code Playgroud)

php authentication laravel codeception

2
推荐指数
1
解决办法
1677
查看次数

ApiTester.php在Codeception中的位置是什么?

我按照这些指南开始为我们的API编写测试

不幸的是,文件夹tests/api中没有名为ApiTester.php的文件,所以正在运行

  php codecept.phar run
Run Code Online (Sandbox Code Playgroud)

给我这样的错误:

 [PHPUnit_Framework_Exception]

fopen(/Users/jj/Development/codeception/tests/api/ApiTester.php): failed to open stream: No such file or directory
Run Code Online (Sandbox Code Playgroud)

php testing acceptance-testing codeception web-api-testing

2
推荐指数
1
解决办法
848
查看次数

如何在Yii2中使用Codeception运行单元测试?

我是Codeception框架的新手,并尝试从此目录运行单元测试脚本:

tests/codeception/frontend/unit
Run Code Online (Sandbox Code Playgroud)

用于测试的数据库配置已在config-local.php中完成.

现在,我的问题是如何运行测试脚本?我试图从终端运行以下命令:

frontend tests
cd frontend
codecept build
codecept run
Run Code Online (Sandbox Code Playgroud)

但它说Codecept:命令未找到.

php unit-testing yii2 codeception

2
推荐指数
1
解决办法
3562
查看次数

Selenium 3.0.1与safaridriver在waitForElementVisible()上失败

Safari 10.0.1 macOS Sierra

运行Codeception命令时:

$I->waitForElementVisible(['css' => 'input[type=text][id=UserUsername]'], 30);
Run Code Online (Sandbox Code Playgroud)

在使用Selenium 3.0.1的Safari验收测试中,我收到错误消息.失败时拍摄的屏幕截图清楚地显示了相关元素.Firefox和Chrome中的相同测试/命令都是成功的.错误:

Screenshot saved to /Applications/MAMP/htdocs/AutomatedTests/tests/_output/debug/FAILED1479307207.png
  Unable to retrieve Selenium logs : The command 'GET /session/9BC56414-8934-4315-9293-B6E99720E318/log/types' is not implemented.
  Command duration or timeout: 3 milliseconds
  Build info: version: '3.0.1', revision: '1969d75', time: '2016-10-18 09:48:19 -0700'
  System info: host: 'Cosettes-MacBook-Pro.local', ip: '10.0.1.75', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.12.1', java.version: '1.8.0_101'
  Driver info: org.openqa.selenium.safari.SafariDriver
  Capabilities [{applicationCacheEnabled=true, rotatable=false, databaseEnabled=true, handlesAlerts=true, version=12602.2.14.0.5, cleanSession=true, platform=MAC, nativeEvents=true, locationContextEnabled=false, webStorageEnabled=true, browserName=safari, javascriptEnabled=true, cssSelectorsEnabled=true}]
  Session ID: 9BC56414-8934-4315-9293-B6E99720E318 …
Run Code Online (Sandbox Code Playgroud)

safari selenium selenium-webdriver safaridriver codeception

2
推荐指数
1
解决办法
998
查看次数