我不熟悉代码.我试图在输入字段中插入文本,然后按ENTER按钮.
$I->fillField('#token-input-yw1', 'Some string');
$I->pressKey('#token-input-yw1', 13);
Run Code Online (Sandbox Code Playgroud)
输入文本但未按下回车键.有任何想法吗?
我在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)
如何获取语言参数值?
我开始在 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)
所以我确定我做错了什么,但我一无所知。
我正在尝试弄清楚如何使用 Codeception 连接到多个数据库。我什至尝试直接实例化一个新的 PDO 实例,但codept run命令只是提前结束且没有错误消息。
我可以使用 Db 模块很好地连接到一个数据库,以使用诸如此类的功能,$I->seeInDatabase()但在尝试连接到两个数据库时却陷入困境。尝试在运行时重新配置 Db 模块$this->getModule('Db')->_reconfigure()也只是停止测试而不显示任何消息。
有任何想法吗?
当我在 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) 当运行代码时,我得到了很多错误:DeepCopy\DeepCopy :: recursiveCopy.
这是一个让我迷惑的问题!
这是代码:
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跟踪发现的问题,当函数 …
假设我们有以下 HTML 代码:
<div>
<p id="fruit">Apple</p>
</div>
Run Code Online (Sandbox Code Playgroud)
如何#fruit通过 codeception抓取并检查其内部 HTML?
我在各种云平台上使用Codeception,例如Amazon AWS和Cloud 9.默认情况下,它们都没有GUI.我的问题是,你能在这种类型的系统上运行Selenium吗?或者我需要以某种方式获得GUI?
我是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中,我没有看到任何区别.
请帮助我,或者给我一个如何重写这部分代码的建议.
我一般在类定义之上使用关键字"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时不能重用这个特性; 在课前定义?
如果有人能指出我的提示或解释,我会很高兴向我解释我应该在哪里使用关键词"使用"最好的.
codeception ×10
php ×6
selenium ×3
yii2 ×3
unit-testing ×2
class ×1
composer-php ×1
enter ×1
laravel-5.1 ×1
namespaces ×1
symfony ×1
traits ×1
ubuntu ×1
webdriver ×1