我在下面有这个测试类,我想从它只运行一个测试,例如"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) 非常厚的问题,但有没有办法在Codeception中将自己的调试消息打印到控制台?我的意思是与断言无关的消息,纯粹用于调试测试本身(例如,你可以var_dump()在任何常规PHP网站中使用变量)
我已经尝试过var_dump(),echo并print但无济于事.使用WebDebug's makeAResponseDump()既不会产生所需的结果,我只是希望能够看到我的变量的内容,而不必像xdebug那样运行调试器.
我正在寻找一个带有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) 我刚开始使用TDD方法并遇到了代码问题.
我在网上搜索了很多,但没有找到正确的解释或区分cest和代码中的cept文件.
我用Codeception的ApiGuy写了一些API测试.现在我想在我的PhpStorm 7中设置断点以进行测试调试,但是不知道如何在之后启动调试会话$ vendor/bin/codecept run.我知道--debug选项,但这不是我想要的.
你有什么主意吗?提前致谢!
当我尝试使用--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)
coverage:
remote: false
enabled: true
include:
- application/*
Run Code Online (Sandbox Code Playgroud)
<?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)
谢谢你的帮助!
Ĵ
我是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
我希望在大多数测试之前保留或运行登录.但是如果我尝试将登录代码移动到_之前它不起作用,因为我没有可用的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) 对于几个控制台命令,我需要更改数据库,以便所有我的雄辩命令和查询在正确的数据库(和服务器)上运行.
我见过几个解决方案,最简单的似乎是改变配置如下:
$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) 我正在使用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/Helsinki了EEST/3.0/DST;
我可不可以做?
codeception ×10
php ×9
testing ×2
assertion ×1
conditional ×1
console ×1
debugging ×1
eloquent ×1
exception ×1
gherkin ×1
if-statement ×1
laravel ×1
output ×1
pageobjects ×1
selenium ×1
tdd ×1
timezone ×1
xdebug ×1