标签: codeception

Codeception pressKey ENTER不起作用

我不熟悉代码.我试图在输入字段中插入文本,然后按ENTER按钮.

$I->fillField('#token-input-yw1', 'Some string');
$I->pressKey('#token-input-yw1', 13);
Run Code Online (Sandbox Code Playgroud)

输入文本但未按下回车键.有任何想法吗?

enter webdriver selenium-webdriver codeception

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

需要在测试代码中使用代码参数

我在acceptance.suite.yml配置文件中有环境配置.其中一个参数是语言.我需要知道实际测试代码中的这个参数值才能正确地驱动测试步骤.

acceptance.suite.yml配置内容:

 class_name: WebGuy
modules:
    enabled:
        - WebDriver
        - WebHelper
        - Db
    config:
        WebDriver:
            browser: firefox
env:
    eng:
        modules:
            config:
                WebDriver:
                   url: 'localhost'
                   lang: en
   esp:
        modules:
            config:
                WebDriver:
                    url: 'localhost'
                    lang: es
Run Code Online (Sandbox Code Playgroud)

如何获取语言参数值?

selenium symfony codeception

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

在 Codeception 测试中找不到 Yii2 类

我开始在 Yii2 中使用 Codeception 进行单元测试。太好了 Yii2 现在完全拥抱它,这是我升级的主要原因!

我很难让 Codeception 找到课程。我编写的控制器类,例如,这些类通过在 Yii2 应用程序中自动加载可以很好地加载。

例如这个控制器:

<?php

class RecipeControllerTest extends \Codeception\TestCase\Test
{
   /**
    * @var \UnitTester
    */
    protected $tester;

    protected function _before()
    {
    }

    protected function _after()
    {
    }

    // tests
    public function testMe()
    {
      echo \app\controllers\RecipesController::getallrecipes();
    }

}
Run Code Online (Sandbox Code Playgroud)

当我codeception run unit在他的输出中在控制台中执行时的结果:

致命错误。测试未完成。

app\controllers\RecipesController未找到类 ' '

我的_bootstrap.php文件包括:

require_once(__DIR__ . '/../../vendor/autoload.php');
require_once(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
Run Code Online (Sandbox Code Playgroud)

所以我确定我做错了什么,但我一无所知。

php composer-php yii2 codeception

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

通过 Codeception 验收测试连接到多个数据库

我正在尝试弄清楚如何使用 Codeception 连接到多个数据库。我什至尝试直接实例化一个新的 PDO 实例,但codept run命令只是提前结束且没有错误消息。

我可以使用 Db 模块很好地连接到一个数据库,以使用诸如此类的功能,$I->seeInDatabase()但在尝试连接到两个数据库时却陷入困境。尝试在运行时重新配置 Db 模块$this->getModule('Db')->_reconfigure()也只是停止测试而不显示任何消息。

有任何想法吗?

php unit-testing acceptance-testing yii2 codeception

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

代码接收错误:调用未定义的方法 Exception::getStatusCode()

当我在 Laravel 中的 Codeception 中运行功能测试时,我时不时会收到错误:

 [Symfony\Component\Debug\Exception\FatalErrorException]  
  Call to undefined method Exception::getStatusCode() 
Run Code Online (Sandbox Code Playgroud)

这些是我的配置:

codeception.yml

actor: Tester
paths:
    tests: tests
    log: tests/_output
    data: tests/_data
    support: tests/_support
    envs: tests/_envs
settings:
    bootstrap: _bootstrap.php
    colors: true
    memory_limit: 1024M
extensions:
    enabled:
        - Codeception\Extension\RunFailed
modules:
    config:
        Db:
            dsn: 'mysql:host=127.0.0.1;port=3306;dbname=la51'
            user: 'root'
            password: 'root'
            populate: false
            cleanup: false
            reconnect: true
Run Code Online (Sandbox Code Playgroud)

功能.suite.yml

class_name: FunctionalTester
modules:
    enabled:
        # add framework module here
        - \Helper\Functional
        - Asserts
        - Db
        - Laravel5
    config:
        Laravel5:
            cleanup: false
Run Code Online (Sandbox Code Playgroud)

这是当我“codecept run”时我在终端中得到的结果:

Rubens-MacBook-Pro:la51 rubenbijker$ codecept run …
Run Code Online (Sandbox Code Playgroud)

php codeception laravel-5.1

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

当我使用yii2框架运行codeception时,DeepCopy :: recursiveCopy异常

当运行代码时,我得到了很多错误:DeepCopy\DeepCopy :: recursiveCopy.

这是一个让我迷惑的问题!

  1. 当我只有4个单元测试用例时,我使用代码发挥很好: 在此输入图像描述
  2. 当我仍然完整的单位测试案例故事发生..
  3. 在我的测试课中有5个单元测试然后我得到了这个: 在此输入图像描述

这是代码:

public function testGetComplexItemNeeds() {
    $this->specify('[getComplexItemNeeds] : ', function($expected) {
        $actual = \common\services\ConfigService::getComplexItemNeeds('300001');

        expect('getComplexItemNeeds', $actual)->equals($expected);
    }, ['examples' => [
            [0 => [
                    'gold' => 1,
                    'list' => [
                        300018 => 1,
                    ],
                ]
            ],
    ]]);
}
Run Code Online (Sandbox Code Playgroud)

php_error.log:

PHP 195. DeepCopy\DeepCopy :: copyArray($ array = array('0000000025e4802e0000000050ab4f11'=> class tests\codeception\frontend\UnitTester {protected $ scenario = class Codeception\Scenario {...}; protected $ friends = array(. ..)},'0000000025e480490000000050ab4f11'=>类Codeception\Scenario {protected $ test = class tests\codeception\frontend\service\ConfigServiceTest {...}; protected $ steps = array(...);

xdebug:我用xdebug跟踪发现的问题,当函数 …

unit-testing yii2 codeception

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

如何使用 codeception 抓取元素?

假设我们有以下 HTML 代码:

<div>
  <p id="fruit">Apple</p>
</div>
Run Code Online (Sandbox Code Playgroud)

如何#fruit通过 codeception抓取并检查其内部 HTML?

php automated-tests acceptance-testing codeception

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

Selenium是否可以在没有GUI的情况下使用Ubuntu

我在各种云平台上使用Codeception,例如Amazon AWS和Cloud 9.默认情况下,它们都没有GUI.我的问题是,你能在这种类型的系统上运行Selenium吗?或者我需要以某种方式获得GUI?

ubuntu selenium codeception

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

即使try-catch,Codeception测试也会失败

我是PHP和Codeception的新手,我一直在尝试使用页面对象编写一些基本的测试.

这是我的页面类中的一个函数示例.理想情况下,它应该单击一个按钮,如果没有按钮,只需记录注释.

try {
    $I->click(self::$buttonAddNewAddress);
} catch (Expection $e) {
    $I->comment('This address will be the first one');
}
Run Code Online (Sandbox Code Playgroud)

我得到«失败链接或按钮或CSS或XPath元素'找不到'// div [@ class ="buttons-set"] /按钮.»每次我尝试运行此代码.

在AcceptanceTester.php中,我有一个与我类似的方法:

try {
    $I->click('//a[contains(.,"No Thanks")]');
} catch (Exception $e) {
    $I->comment('No email capture visible');
}
Run Code Online (Sandbox Code Playgroud)

如果链接不可见,它可以正常工作.除了第一个代码是在页面类中,第二个代码在AcceptanceTester.php中,我没有看到任何区别.

请帮助我,或者给我一个如何重写这部分代码的建议.

php selenium codeception

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

如何以及在何处使用php中的关键字"use"

我一般在类定义之上使用关键字"use".像这样:

<?php
namespace suites\plugins\content\agpaypal;
use \Codeception\Util\Fixtures;
use \Codeception\Verify;
use \Codeception\Specify;

class agpaypalTest extends \Codeception\Test\Unit
{
    protected $tester;
    ...
Run Code Online (Sandbox Code Playgroud)

但是现在我意识到,我必须将特性指定的行放入类定义中.像这样:

 <?php
namespace suites\plugins\content\agpaypal;
use \Codeception\Util\Fixtures;
use \Codeception\Verify;

class agpaypalTest extends \Codeception\Test\Unit
{
    use \Codeception\Specify;

    protected $tester;
    ...
Run Code Online (Sandbox Code Playgroud)

我认为这是因为包\ Codeception\Specify; 是一种特质.但我不明白为什么我设置行use\Codeception\Specify时不能重用这个特性; 在课前定义?

如果有人能指出我的提示或解释,我会很高兴向我解释我应该在哪里使用关键词"使用"最好的.

php namespaces class traits codeception

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