目前我正在尝试安装代码并使用CLI来获取文件并进行安装.我是CLI的新手,并使用SSH进行连接.但是习惯它.我使用$ WGET然后执行了下载文件$ php codecept.phar bootstrap.
CLI(cygwin)没有做任何事情.它只是创建一个新行,c?$然后我可以继续使用CLI.但没有任何事情发生.所以我想我只是尝试使用composer来安装代码.使用CLI下载composer.phar并使用它运行它$ php composer.phar.然后它创建一个新行????$.然后我可以再次使用CLI,没有任何变化或发生.
我的假设是执行phar文件有问题.有些设置错了吗?
一些额外的数据:
$ php -v:
PHP 5.3.27 with Suhosin-Patch (cli) (built: Jul 25 2013 14:17:18)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies
Run Code Online (Sandbox Code Playgroud)
$ php -m:
包含phar和curl都是codecept所必需的.
$ php -i:( Phar部分)
Phar
Phar: PHP Archive support => enabled
Phar EXT version => 2.0.1
Phar API version => 1.1.1
SVN revision => $Id: 21d763042eb5769ae0a09dc1118df2b5aae6fb33 …Run Code Online (Sandbox Code Playgroud) 我正在使用 Codeception 运行验收测试,我需要计算带有“.remove”类的按钮在一页中出现的次数。此类按钮位于 html 表内,计数取决于购物车中的商品数量。
以下是我尝试使用的代码:
$I->amOnPage("/cart/");
$table = $I->grabTextFrom(".//*[@id='cart']/table");
$rows = explode("<tr>", $table);
$rcount = count($rows);
while ($rcount >= 0) {
$I->click(".remove");
$rcount--;
}
$I->see("Your shopping cart is empty.");
Run Code Online (Sandbox Code Playgroud) 我真的坚持这个验收测试.
我的代码是这样的
$I->click('Submit');
$I->see('Client Added');
$I->seeInDatabase('customers',[
'afm'=>'111'
]);
Run Code Online (Sandbox Code Playgroud)
一切都通过,直到带有"seeInDatabase"的行.Log给出了这个错误"ALERT:找不到匹配的记录失败断言'0'大于0".
我检查了数据库设置
modules:
config:
Db:
dsn: 'mysql:host=localhost;dbname=dbtesting'
user: 'test'
password: 'test'
dump: app/tests/_data/dump.sql
populate: true
cleanup: true
Run Code Online (Sandbox Code Playgroud)
对我来说似乎很好.我用seeInDatabase()检查了一行,我知道它在那里,是的,它工作得很好.(不是PDO问题或类似的事情)
所以我在表单的"POST"后强制在我的控制器中创建,以确保
public function store(){
\Customer::create(['afm'=>111]);
return \Redirect::route('customers.index')->with('successMsg',Client Added');
}
Run Code Online (Sandbox Code Playgroud)
再一次,我无法验证这一新行.不知道怎么解决这个问题?
////更新/////
当我用香草PDO代码替换Eloquent Insert时,一切正常.如何解决这个问题?(这里有完整信息)
是否有机制将本地设置导入codeception.yml配置文件?
我们的开发人员拥有自己的数据库,也许还有一些其他特定于环境的测试设置,因此不应将这些设置推送到GIT.通常我们通过使用两个配置文件来解决这个问题,其中一个配置文件是全局的并且在GIT中.另一个,本地的一个以某种方式合并到全局一个并被git忽略.我想要实现的将是以下结构:
配置文件有一个include属性,但它似乎处理完整的测试套件.
我正在使用PhpStorm和Yii2高级模板.我看过所有Yii2文件.一切安好.有关于整合Yii2和PhpStorm(两者都是我的最爱)的一些问题,谷歌搜索没有引起任何好的解决方案.也许很多开发人员都有同样的问题,所以我想问一下:
SignupCest.php文件)时,名称空间未定义且PhpStorm无法在主题类中找到引用的方法!有什么建议或解决方案吗?
我正在尝试调试我的Codeception测试。
当从浏览器使用正确的IDE-KEY作为 cookie时,我使用PHPStorm + XDebug 的调试平台运行良好。
但是,在尝试使用CLI调试 codecept 时,我遇到了以下问题:
如果我尝试Resume、Step Out或Step Over,xdebug 会忽略我的请求并始终步入当前行。
这让我的测试真的很难继续。
我尝试过使用两个平台:我常用的 vagrant + nginx + php5-fpm(带远程调试)和 wamp(本地调试)。
任何帮助,将不胜感激!
——
更新: 嗯,这与 Codeception 无关。我尝试仅使用PHPUnit进行测试,结果也是如此。CLI 似乎也不是问题,因为我尝试从浏览器调试 PHPUnit,但没有成功。
我想可能是 PHPStorm 错误,但查看 xdebug 日志,我看到调用了正确的方法:
<- step_over -i 41
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="41" status="break" reason="ok">
Run Code Online (Sandbox Code Playgroud)
step_over 被调用,而不是 step_into。那么也许是 xdebug 的错误?
奇怪的是,这并不总是发生。更改配置后,有时不会发生,但是错误似乎又回来了......
我正在学习Codeception,并遇到了一些我认为很奇怪的事情.
// This works
$I->see('Secure Check Out', '(//a[contains(text(),"Secure Check Out")])[2]');
// This does not
$I->click('Secure Check Out', '(//a[contains(text(),"Secure Check Out")])[2]');
Run Code Online (Sandbox Code Playgroud)
无法单击"安全检出","(// a [包含(文本(),"安全检出")])[2]":找不到链接或按钮或CSS或XPath'安全检出'在页面上.
通过Selenium WebDriver对Firefox运行.我该怎么做才能让它发挥作用?
这里大致是相关的HTML.
<div class="mobile-only">
<a href="/responsive/ajax/modals/check-out/login.php" class="secure-checkout button blue bordered small modal-open">Secure Check Out</a>
</div>
<div class="secure-checkout-button threecol last mobile-hide">
<div class="pull-right">
<a style="background-color: transparent;" href="/responsive/ajax/modals/check-out/login.php" class="button blue bordered small modal-open">Secure Check Out</a>
</div>
</div>
Run Code Online (Sandbox Code Playgroud) 我有以下文件夹结构,我希望在不同的目录中存在多个测试套件.
- project
- app
- app-A
- tests
- (functional tests here)
- app-B
- tests
- (functional tests here)
- domains
- domain-A
- tests
- (unit tests here)
- domain-B
- tests
- (unit tests here)
Run Code Online (Sandbox Code Playgroud) 我是 Codeception 的新手,我正在尝试使用它来测试我的 Web 服务。现在我正试图弄清楚如何深入挖掘并测试来自不同 API 点的输出。例如,我正在尝试创建一个用户并检查响应是否包含必要的详细信息。
创建UserCept.php
<?php
$faker = Faker\Factory::create();
$I = new ApiTester($scenario);
$I->wantTo('create a new user');
$I->haveHttpHeader('Authorization', 'Bearer ' . file_get_contents('tests/api/token'));
$I->sendPost('users', [
"first_name" => "Test",
"last_name" => "Test",
"email" => 'test@test.com',
"password" => "testing",
"role" => "1"
]);
$I->seeResponseCodeIs(200);
$I->seeResponseIsJson();
Run Code Online (Sandbox Code Playgroud)
响应类似于:
{
"status": "success",
"data": {
"first_name": "Test",
"last_name": "Test",
"email": "test@test.com",
"updated_at": "2015-11-12 09:08:31",
"created_at": "2015-11-12 09:08:31",
"id": 54
},
"errors": null,
"message": "Resource Created Successfully"
}
Run Code Online (Sandbox Code Playgroud)
现在我可以做这样的断言:
$I->seeResponseContainsJson(['status' => 'success']);
Run Code Online (Sandbox Code Playgroud)
它就像一种魅力,但是当我这样做时:
$I->seeResponseContainsJson(['data.first_name' => …Run Code Online (Sandbox Code Playgroud) 我正在使用 codeception REST 模块编写一些测试。
我正在做的项目处于早期阶段,我们还没有实现基于令牌的身份验证;所以现在身份验证是通过 REST API 完成的,但它$_SESSION用于持久性。
要测试经过身份验证的请求,我需要保留PHPSESSIDcookie 并随每个请求发送它。在使用 REST 模块时,有没有办法读取/设置 cookie?