标签: codeception

如何从套件中仅运行一个测试?

我在下面有这个测试类,我想从它只运行一个测试,例如"aboutPage".有什么想法?

这就是我只运行这个文件的方式:

codecept run tests/acceptance/VisitorCest.php
Run Code Online (Sandbox Code Playgroud)

但是现在我想从文件中只运行一个测试.

<?php
use \AcceptanceTester;

class VisitorCest
{
    public function _before(){}
    public function _after(){}

    public function aboutPage(AcceptanceTester $I)
    {
        $I->wantTo('check about page');
    }

    public function contactPage(AcceptanceTester $I)
    { 
        $I->wantTo('check contact page');
    }
}
Run Code Online (Sandbox Code Playgroud)

php codeception

80
推荐指数
5
解决办法
4万
查看次数

在Codeception中将调试输出打印到控制台

非常厚的问题,但有没有办法在Codeception中将自己的调试消息打印到控制台?我的意思是与断言无关的消息,纯粹用于调试测试本身(例如,你可以var_dump()在任何常规PHP网站中使用变量)

我已经尝试过var_dump(),echoprint但无济于事.使用WebDebug's makeAResponseDump()既不会产生所需的结果,我只是希望能够看到我的变量的内容,而不必像xdebug那样运行调试器.

php debugging console output codeception

38
推荐指数
5
解决办法
4万
查看次数

Codeception,使用pageObject设计模式和小黄瓜编写验收测试

我正在寻找一个带有pageObject设计模式和小黄瓜的代码的简单示例,因为当我遵循代码生成BDD文档时,所有示例都在tests/support/AcceptanceTester.php中编写.我不明白(英语技能差 - - )如何不将所有代码集中在AcceptanceTester.php文件中.

例如,我有一个带有两个按钮A和B的示例主页.如果用户单击按钮A,则加载页面A,否则如果用户单击按钮B,则加载页面B.

目前,我的AcceptanceTester:

<?php
// tests/_support/AcceptanceTester.php
/**
 * Inherited Methods
 * @method void wantToTest($text)
 * @method void wantTo($text)
 * @method void execute($callable)
 * @method void expectTo($prediction)
 * @method void expect($prediction)
 * @method void amGoingTo($argumentation)
 * @method void am($role)
 * @method void lookForwardTo($achieveValue)
 * @method void comment($description)
 * @method \Codeception\Lib\Friend haveFriend($name, $actorClass = NULL)
 *
 * @SuppressWarnings(PHPMD)
 */

class AcceptanceTester extends \Codeception\Actor
{
    use _generated\AcceptanceTesterActions;

    /**
     * @Given The home …
Run Code Online (Sandbox Code Playgroud)

php gherkin pageobjects codeception

34
推荐指数
1
解决办法
780
查看次数

Codeception - cest和cept有什么区别?

我刚开始使用TDD方法并遇到了代码问题.

我在网上搜索了很多,但没有找到正确的解释或区分cest和代码中的cept文件.

php testing tdd codeception

28
推荐指数
1
解决办法
7436
查看次数

使用Xdebug调试Codeception测试

我用Codeception的ApiGuy写了一些API测试.现在我想在我的PhpStorm 7中设置断点以进行测试调试,但是不知道如何在之后启动调试会话$ vendor/bin/codecept run.我知道--debug选项,但这不是我想要的.

你有什么主意吗?提前致谢!

php testing xdebug codeception

25
推荐指数
3
解决办法
8343
查看次数

无法使用代码覆盖率运行Codeception测试

当我尝试使用--coverage标志运行测试时,我收到错误.


输入

php codecept.phar run acceptance testCest.php --coverage
Run Code Online (Sandbox Code Playgroud)

产量

[ErrorException] file_get_contents(http://project.local/c3/report/clear): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
Run Code Online (Sandbox Code Playgroud)

codeception.yml

coverage:
    remote: false
    enabled: true
    include:
        - application/*
Run Code Online (Sandbox Code Playgroud)

的public_html/index.php文件

<?php require __DIR__.'/../c3.php'; ?>
Run Code Online (Sandbox Code Playgroud)

版本

PHP: 5.5.12
Xdebug: 2.5.0
Codeception: 2.0.7
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

Ĵ

php code-coverage codeception

25
推荐指数
1
解决办法
1689
查看次数

在条件(if)语句中使用CodeCeption断言

我是CodeCeption的新手.

我想根据另一个断言结果做一个动作/断言,如下所示:

if ($I->see('message')){

    $I->click('button_close');

}
Run Code Online (Sandbox Code Playgroud)

有可能吗?我试过了,但没办法.可能断言结果不适用于IF,但还有其他选择吗?

提前致谢!

重要更新:

最后Codeception现在有了这个功能performOn!! http://codeception.com/docs/modules/WebDriver#performOn

php conditional if-statement assertion codeception

21
推荐指数
2
解决办法
7423
查看次数

Codeception:保持登录状态

我希望在大多数测试之前保留或运行登录.但是如果我尝试将登录代码移动到_之前它不起作用,因为我没有可用的webguy实例.

在多个测试之间保持会话的最佳方法是什么?这是我的代码到目前为止,很乐意得到一些帮助.我用谷歌搜索并检查了文档,但我找不到任何关于会话的东西.

<?php
use \WebGuy;

class ProductCest
{

    private $product_id = '1';

    public function _before()
    {
    }

    public function _after()
    {
    }

    // tests
    public function login(WebGuy $I) {
        $I->seeInCurrentUrl('/auth/login');
        $I->fillField("//input[@type='email']", "username@email.com");
        $I->fillField("//input[@type='password']", "1234");
        $I->click('#signIn .submit');
        $I->wait(500);

        $I->seeInCurrentUrl('/account');
    }

    /**
     * @depends login
     */
    public function chooseProduct(WebGuy $I) {
        $I->wantTo('go to products and choose one');
        $I->amOnPage('/?product=' . $this->client_id);
    }

}
Run Code Online (Sandbox Code Playgroud)

php selenium codeception

19
推荐指数
3
解决办法
7234
查看次数

动态切换数据库连接

对于几个控制台命令,我需要更改数据库,以便所有我的雄辩命令和查询在正确的数据库(和服务器)上运行.

我见过几个解决方案,最简单的似乎是改变配置如下:

$new_connection = [
        'driver'    => 'mysql',
        'host'      => '127.0.0.1',
        'database'  => 'test_db',
        'username'  => 'test',
        'password'  => 'test',
        'charset'   => 'utf8',
        'collation' => 'utf8_general_ci',
        'prefix'    => '',
        'strict'    => false
];

config(['database.connections.mysql' => $new_connection]);
DB::purge('mysql');
Run Code Online (Sandbox Code Playgroud)

唯一的问题(我注意到)是当我尝试进行交易时,更具体地说,当我在Codeception中的验收测试中进行交易时 - 它们根本不起作用.

我使用的命令是:

DB::connection()->beginTransaction(); // inside the _before function
Run Code Online (Sandbox Code Playgroud)

DB::connection()->rollBack(); // inside the _after function
Run Code Online (Sandbox Code Playgroud)

laravel eloquent codeception

18
推荐指数
1
解决办法
6802
查看次数

`[Exception] DateTime :: __ construct():`依赖系统的时区设置是不安全的

我正在使用codeception(bdd)进行测试但却出错

[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 
Run Code Online (Sandbox Code Playgroud)

任何这些
方法,你仍然得到这个警告,你很可能拼写错误的时区标识符.

我们选择Europe/HelsinkiEEST/3.0/DST;

我可不可以做?

php timezone exception codeception

17
推荐指数
2
解决办法
3万
查看次数