我正在使用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;
我可不可以做?
在API repo中,我添加了codeception + c3
"require-dev": {
"codeception/codeception": "2.*",
"codeception/c3": "2.*",
Run Code Online (Sandbox Code Playgroud)
我还在index.php中包含了c3.php,但是当尝试用--coverage测试它时我有这个错误
[PHPUnit_Framework_Exception] file_get_contents(http://local.api.codeception.com/c3/report/clear):fai导致开放流:HTTP请求失败!HTTP/1.1 500内部服务器错误
是否有任何使用Codeception进行远程代码覆盖的在线示例?
刚开始使用codeception 2.0.9并使用phantomjs安装它并运行了一些示例测试.
Codeception在最后给出了一个简洁的html报告,总结了红色和绿色的传递测试,这很好.在报告目录中还有失败测试的屏幕截图,例如ExampleCest.CheckLabel.fail.png ExampleCest.CheckLabel.fail.html
问题,这些如何(自动)链接到report.html,以便可以在浏览器中看到报告中的失败屏幕截图?
我想在codeception cest测试中只跳过一个测试.
使用Cept测试可以做$scenario->skip();但不适用于Cest测试.
所以我想做这样的事情.运行第一个测试,但跳过第二个测试.
Class MyTests{
public funtion test1(){
// My test steps
}
public function test2(){
$scenario->skip("Work in progress");
}
}
Run Code Online (Sandbox Code Playgroud)
先感谢您.
我正在尝试关闭由Yii2生成的确认js弹出窗口,以确认删除记录,在这种情况下是用户,使用Codeception和他的.
以下是错误:
[WebDriverException]远程响应的JSON解码失败.错误代码:4响应:'无效的命令方法 - 请求=> {"标题":{"接受":"application/json","Content-Length":"0","Content-Type":"application/JSON;字符集= UTF-8" , "主机": "127.0.0.1:4444"},"httpVersion":"1.1","method":"GET","url":"/alert_text","urlParsed" :{ "锚": "", "查询": "", "文件": "alert_text", "目录": "/", "路径": "/ alert_text", "相对的": "/ alert_text", "端口": "", "宿主": "", "密码": "", "用户": "", "用户信息": "", "权威": "", "协议": "","源 ":"/ alert_text", "queryKey":{}, "块":[ "alert_text"]} "urlOriginal": "/会话/ cac855f0-e7f8-11e4-ae75-8baa74cf41b1/alert_text"}"
以下是我的代码:
<?php
$username = 'foobar';
$email = 'foo@bar.com';
$I = new AcceptanceTester($scenario);
$I->wantTo('Check that users can update their passwords');
$I->haveInDatabase('user', array('username' => $username, 'email' => $email));
$id = $I->grabFromDatabase('user', 'id', array('username' => $username, …Run Code Online (Sandbox Code Playgroud) <select>
<option value=''>-- Select an Option --</option>
@foreach ($options as $option)
<option value='{{ $option->value }}'>{{ $option->name }}</option>
@endforeach
</select>
Run Code Online (Sandbox Code Playgroud)
选择第一个动态选项
我正在使用Codeception进行Laravel 4 PHP应用程序的单元,功能和验收测试.
我的单元测试看起来如下:
use Codeception\Util\Stub;
class ExampleTest extends \Codeception\TestCase\Test
{
public function testExample()
{
$example = true;
$this->assertSame($example, true);
}
}
Run Code Online (Sandbox Code Playgroud)
我的功能测试看起来像这样:
use \TestGuy;
class ExampleCest
{
public function example(TestGuy $I)
{
$I->amOnPage('/auth/login');
$I->see('Sign in');
}
}
Run Code Online (Sandbox Code Playgroud)
但我也想在我的功能测试中使用PHPUnit断言方法.但是当我尝试时,我得到了这个错误:
调用未定义的方法ExampleCest :: assertSame()
如何在Codeception功能测试中使用PHP断言方法?
我正在尝试使用代码编写一个控制器函数的API测试用例,我遇到的问题是,到控制器函数的路径似乎没有被正确评估,并且评估似乎根据我的不同而不同在我的测试用例中.
以下是我的测试用例中的代码示例:
use \ApiTester;
class CustomerRegisterCest
{
// tests
public function testGetRegister(ApiTester $I)
{
$I->sendGET('register');
$I->seeResponseCodeIs(200);
}
public function testPostRegister(ApiTester $I)
{
$I->sendPOST('register', [
// set the data in here
]);
$I->seeResponseCodeIs(200);
}
Run Code Online (Sandbox Code Playgroud)
我有一个包含这些路由的routes.php文件:
Route::get('/', ['as' => 'home', 'uses' => 'HomeController@getIndex']);
Route::get('register', ['as' => 'getRegister', 'uses' =>'RegistrationController@getRegister']);
Route::post('register', ['as' => 'postRegister', 'uses' => 'RegistrationController@postRegister']);
Run Code Online (Sandbox Code Playgroud)
我已经将一些调试语句插入到我的控制器类中,以便我可以看到运行的路由,如下所示:
Log::debug('GET register'); // or GET index or POST register, etc
Run Code Online (Sandbox Code Playgroud)
目前我已经从控制器类中删除了所有内容,因此只包含调试语句.
当我像上面那样运行测试用例时,我得到以下调试输出:
GET register
GET index
Run Code Online (Sandbox Code Playgroud)
...所以似乎sendPOST('register',...)实际上路由到"/"的GET路由而不是"/ register"的POST路由.在测试用例之外一切正常 - 我可以POST到寄存器路由正常,路由似乎工作正常,问题只出现在一个代码测试案例中.
如果我更改测试用例,以便我在同一个函数调用中执行sendGET和sendPOST,例如:
// tests
public function …Run Code Online (Sandbox Code Playgroud) 我有两个php envs,我现在可以为不同的URL运行这样的东西
modules:
enabled:
- WebDriver
- AcceptanceHelper
config:
WebDriver:
url: 'http://localhost/'
browser: 'phantomjs'
env:
alpha:
modules:
config:
WebDriver:
url: 'http://myalphasite/'
beta:
modules:
config:
WebDriver:
url: 'http://mybetasite/'
Run Code Online (Sandbox Code Playgroud)
目前我使用命令运行它们
codecept run --env alpha ,或者 codecept run --env beta
有没有办法在运行代码测试时从命令行提供url,比如codecept run site = alpha.test.com然后从配置内部抓取它而不是硬编码网址?
Codeception默认_bootstrap.php文件状态:
<?php
// Here you can initialize variables that will be available to your tests
Run Code Online (Sandbox Code Playgroud)
所以我想在其中初始化一个变量:
<?php
$a = 5;
Run Code Online (Sandbox Code Playgroud)
但是,当我使用它时SomeAcceptanceCept:
<?php
// ....
$I->fillField('description', $a);
Run Code Online (Sandbox Code Playgroud)
我明白了: ErrorException: Undefined variable: a
我做var_dump了_bootstrap.php,它确实在验收测试之前运行了一次,但是我的测试中没有变量.
我似乎无法找到任何关于此的文档.
我实际上是在尝试初始化Faker实例以在我的测试中使用.