标签: codeception

Codeception 功能测试中的假 IP

I\xc2\xb4m 使用 Yii2 和 Codeception 来运行测试。

\n\n

当我运行功能测试时,$SERVER['REMOTE_ADDR']未定义。我怎样才能模拟在这些测试中使用的IP。

\n\n

我已经尝试过$SERVER['REMOTE_ADDR'] = '127.0.0.1',但它不起作用。

\n

yii2 codeception

5
推荐指数
1
解决办法
934
查看次数

docker selenium/standalone-chrome 无法连接到 docker web 服务器

我正在尝试使用 codeception 来运行使用 docker 容器开发的 php 网站的测试。我在 Web 容器中创建了一个测试文件夹并将 codecept.phar 放在那里。

这是项目的设置:

  • docker-compose.yml:

    version: '3'
      services:
        db:
          image: mariadb
          restart: always
          volumes:
            - ./db:/var/lib/mysql
          ports:
            - '3306:3306'
          environment:
            MYSQL_ROOT_PASSWORD: root
        web:
          build: .
          restart: always
          tty: true
          volumes:
            - ./src:/var/www
            - ./build/php.ini:/usr/local/etc/php/php.ini
          ports:
            - '80:80'
          depends_on:
            - db
        chrome:
          image: selenium/standalone-chrome
          restart: always
          ports:
            - '4444:4444'
            - '5900:5900'
          depends_on:
            - web
    
    Run Code Online (Sandbox Code Playgroud)
  • 接受.suite.yml

    actor: AcceptanceTester
    modules:
      enabled:
        - WebDriver:
            url: web
            host: chrome
            browser: chrome
            wait: 15
            window_size: false
        - \Helper\Acceptance …
    Run Code Online (Sandbox Code Playgroud)

selenium-webdriver docker codeception docker-compose

5
推荐指数
1
解决办法
5965
查看次数

生成测试时无法找到配置文件

我正在使用我的yml文件的绝对路径...是不是我应该提供路径的正确文件?我已经确认我正在使用的路径是正确的...

$ vendor/bin/codecept generate:cept -config="~/path/to/codeception.yml" acceptance createUser

  [Codeception\Exception\Configuration]  
  Configuration file could not be found  

generate:cept [-c|--config[="..."]] suite test
Run Code Online (Sandbox Code Playgroud)

php codeception

4
推荐指数
1
解决办法
5856
查看次数

codeception没有看到dump.sql

我正在使用Yii2和Codeception.问题是Codeception似乎没有看到数据库转储.为简单起见,我只考虑LoginCept验收测试:

use tests\_pages\LoginPage;

$I = new WebGuy($scenario);
$I->wantTo('ensure that login works');
$loginPage = LoginPage::openBy($I);

$I->see('Login', 'h1');

$I->amGoingTo('try to login with empty credentials');
$loginPage->login('', '');
$I->expectTo('see validations errors');
$I->see('Username cannot be blank.');
$I->see('Password cannot be blank.');
...
Run Code Online (Sandbox Code Playgroud)

所以,当我跑

./vendor/bin/codecept run tests/acceptance/LoginCept.php
Run Code Online (Sandbox Code Playgroud)

一切都运行没有错误:

Acceptance Tests (1) ----------------------------------------
Trying to ensure that login works (LoginCept.php)       Ok
-------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

但是只要我添加以下行

echo $I->grabFromDatabase('user', 'name', ['id' => 1]);
Run Code Online (Sandbox Code Playgroud)

测试开始失败:

Acceptance Tests (1) ----------------------------------------
Trying to ensure that login works (LoginCept.php)       Error
-------------------------------------------------------------
Time: 2.11 seconds, Memory: 9.75Mb …
Run Code Online (Sandbox Code Playgroud)

php mysql yii codeception

4
推荐指数
1
解决办法
2087
查看次数

在Codeception Functional Cept中设置预期的异常

我想做的事情如下:

$I->setExpectedException('Laracasts\Validation\FormValidationException');
Run Code Online (Sandbox Code Playgroud)

在一个功能性的cept.有机会吗?

\PHPUnit_Framework_TestCase::setExpectedException('Laracasts\Validation\FormValidationException');
Run Code Online (Sandbox Code Playgroud)

上面的代码将单独工作,但如果我运行codecept run,一旦完成预期异常的测试,测试就会卡住.

这是我的设置:

阳明:

class_name: FunctionalTester
modules:
    enabled: [Filesystem, Db, FunctionalHelper, Laravel4, Asserts]
Run Code Online (Sandbox Code Playgroud)

php phpunit laravel laravel-4 codeception

4
推荐指数
1
解决办法
6895
查看次数

yii2安装,配置和运行代码测试

我写这篇是因为yii2官方文档仍然不完整,而且代码文档本身引用了yii2官方文档.. :).

我有一些问题:

  • 在我的yii2 app root中有一个目录"tests/codeception",这意味着我的项目中已经安装了代码?
  • 在vendor/yiisoft中还有另一个代码目录"yii2-codeception"是什么?
  • 文档说创建一个yii2_basic_tests数据库并运行迁移,但迁移脚本只创建一个"迁移"表,是否正确?
  • 与yii2的集成提供了一些Web界面,还是我必须从控制台脚本运行测试?

有人可以解释我如何在yii2基本应用程序中逐步安装和配置代码?

谢谢

亚历山德罗

yii2 codeception

4
推荐指数
2
解决办法
6769
查看次数

在代码中将文件发送到Restful服务

我想测试文件上传的restful API测试.

我试着跑:

 $I->sendPOST($this->endpoint, $postData, ['file' => 'example.jpg']);
Run Code Online (Sandbox Code Playgroud)

我希望它的行为与example.jpg文件输入中的用户发送文件的行为相同,file但它似乎没有这种方式.我越来越:

[PHPUnit_Framework_ExceptionWrapper]上传的文件必须是UploadedFile的数组或实例.

是否可以在代码中使用REST插件上传文件?文档非常有限,很难说如何做到这一点.

我也在使用Postman插件测试API Google Chrome,我可以使用这个插件上传文件而没有问题.

testing rest laravel codeception laravel-5

4
推荐指数
2
解决办法
2460
查看次数

找不到代码Yii

我试图使用codecept在Yii2项目中运行单元测试.并收到下一个错误:

PHP Fatal error:  Class 'Yii' not found in /var/www/html/mysite/vendor/codeception/codeception/src/Codeception/Module/Yii2.php on line 77
Run Code Online (Sandbox Code Playgroud)

这是我的unit.suite.yml内容:

# Codeception Test Suite Configuration

# suite for unit (internal) tests.
# RUN `build` COMMAND AFTER ADDING/REMOVING MODULES.

class_name: CodeGuy
modules:
    enabled: [CodeHelper, Yii2]
    config:
        Yii2:
            configFile: 'config/web.php'
Run Code Online (Sandbox Code Playgroud)

有谁知道问题是什么?

php unit-testing yii2 codeception

4
推荐指数
1
解决办法
3446
查看次数

如何正确更改测试环境变量 - Codeception和Laravel 5.1

我试图使用sqlite db进行测试,因为我不想触摸我的实际数据库:

在我的unit.suite.yml文件中:

class_name: UnitTester
modules:
    enabled: [Asserts, UnitHelper]
    config:
        Db:
            dsn: 'sqlite:app/tests/_data/testdb.sqlite'
            user: ''
            password: ''
            dump: app/tests/_data/dump.sql
Run Code Online (Sandbox Code Playgroud)

在我的TestCase.php文件中,我有一个函数可以重置和迁移并为db进行种子测试:

        Artisan::call('migrate:reset');
        Artisan::call('migrate');
        Artisan::call('db:seed');
Run Code Online (Sandbox Code Playgroud)

我还将sqlite设置添加到app/config/testing/database.php:

<?php
// Codeception testing environment uses SQLITE

return [

    'default' => 'sqlite',

    'connections' => [
        'sqlite' => [
            'driver' => 'sqlite',
            'database' => 'app/tests/_data/testdb.sqlite',
            'prefix' => ''
        ],
    ]
];
Run Code Online (Sandbox Code Playgroud)

我可以验证是否正在读取database.php文件,但是某些东西仍然阻止了sqlite的使用,我仍然最终收回了我的REAL数据库(MySQL).如何强制Laravel/Codeception使用我的测试数据库?

laravel codeception

4
推荐指数
3
解决办法
6128
查看次数

如何在一个命令中运行多个代码接收套件(但不是全部)?

在PHP Codeception测试框架中,我希望能够一次运行多个套件。

我可以这样运行它们:

codecept run
Run Code Online (Sandbox Code Playgroud)

或者我可以像这样运行单个套件:

codecept run acceptance
codecept run unit
codecept run browser
Run Code Online (Sandbox Code Playgroud)

但是我希望一次只能运行两个

codecept run acceptance,unit // This is not a thing. How can I do this?
Run Code Online (Sandbox Code Playgroud)

codeception

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