我正在buildbot和phantomjs的帮助下实现代码.
这一切都很好,buildbot在提交时会激活代码,并且我在后台运行了phantomjs,接受来自de WebDriver的codeception连接.
然而问题是phantomjs正在保存cookie,所以我的第一个登录测试总是失败,因为用户已经登录了.
在每次测试运行后,如何让phantomjs重置它的cookie?
我尝试重新启动phantomjs,这解决了问题,但我不知道如何使用buildbot.此外,对于这个特定的问题,它似乎有些过分.
我想测试一下我的Laravel 4应用程序.但是,如果不创建数据库,我就无法做到.问题是,我想要解决这些问题:
怎么接近?
我现在正在努力解决代码问题.我参与了一个laravel 4项目.从现在开始,我们使用PhpUnit进行单向测试,但是我们的页面中有太多的Javascript用简单的DomCrawler进行验收测试,这是没有意义的.首先,我在流浪汉VM上安装了selenium + chrome.花了我一些时间,但我设法让它工作,这意味着我可以浏览Webdriver网页(/ wd/hub),然后使用chrome成功创建一个新的会话.
接下来,我通过作曲家安装了代码
codecept bootstrap
我将Laravel4作为模块添加到acceptance.suite.yml
class_name: AcceptanceTester
modules:
enabled:
- WebDriver
- AcceptanceHelper
- Laravel4
config:
WebDriver:
url: 'https://192.168.33.10/'
browser: 'chrome'
Run Code Online (Sandbox Code Playgroud)
我做了一个codecept构建.然后我写了一个非常简单的acceptanceTest来检查一切是否有效:
$I = new AcceptanceTester($scenario);
$I->am('a member');
$I->wantTo('connect');
$I->amOnRoute('login');
$I->see('someText');
Run Code Online (Sandbox Code Playgroud)
当我执行codecept运行时,它会在屏幕上引发错误:
[LogicException]在迭代Finder之前,必须调用in()或append()方法之一.
在Selenium WebDriver页面中,它表示已创建了一个chrome会话.
我对这个错误进行了一些搜索.它来自Symfony的Finder组件.
有人可以帮助我吗?
我正在尝试使用Codeception为家庭作业创建一个小测试套件.我的想法是将单个Cest测试场景应用于多个URL并获得不同的结果,然后我可以通过某些标识(例如文件的名称)进行记录.
我无法弄清楚有两件主要的事情:
提前致谢!
首先,我几乎是全新的编程和全新的代码和PHP.
我想知道是否有人可以帮我解决如何使用codeception在REST模块http://codeception.com/docs/modules/REST#sendPOST中使用sendPost方法发送文件.
帮助文件描述了通过阵列发送它,但老实说无法搞清楚.
我能想出的最合理的方法如下
$I->sendPost(array("filename"))
Run Code Online (Sandbox Code Playgroud)
就像我说的那样,全新的.
该文件位于已安装Codeception的目录中,因此我不认为我需要指定它的位置.我也知道如何在没有附件的情况下发送帖子,而不是附带文件的帖子.
我希望这些信息足够多.
如果不是,请道歉.
我正在通过SubmitForm()函数测试表单,因为表单使用javascript循环遍历每个单独的项目.
例:
$I->submitForm('#form', array(
'feet' => '1',
'inches' => '2',
), 'submit');
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我遇到文件上传输入的问题.
$I->submitForm('#form', array(
'feet' => '1',
'inches' => '2',
'file' => ???
), 'submit');
Run Code Online (Sandbox Code Playgroud)
我尝试发送一个数组来模仿$_FILES数组,但显然这不是正确的方法.这可能吗?
当使用带有PhpBrowser驱动程序的REST模块通过代码接收测试发出请求时,没有数据和文件通过Silex应用程序。
// ApiTester $I
$I->wantTo('Submit files');
// prepare:
$data = ['key' => 'value'];
$files = [
'file_key' => 'path/to/file.doc',
'file2_key' => 'path/to/file2.doc'
];
// act:
$I->haveHttpHeader('Content-Type', 'multipart/form-data');
$I->sendPOST('/attachments/', $data, $files);
Run Code Online (Sandbox Code Playgroud)
I have http header "Content-Type","multipart/form-data"
I send post "/attachments/",{"key":"value"},{"file_key":"/path/to/file/...}
[Request] POST http://localhost/attachments/ {"key":"value"}
[Request Headers] {"Content-Type":"multipart/form-data"}
[Page] http://localhost/attachments/
[Response] 400
[Request Cookies] []
[Response Headers] {"Date":["Tue, 25 Oct 2016 09:15:31 GMT"],"Server":["Apache/2.4.10 (Debian)"],"Cache-Control":["no-cache"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Headers":["Content-Type, Authorization"],"Access-Control-Allow-Methods":["GET,PATCH,PUT,POST,HEAD,DELETE,OPTIONS"],"Content-Length":["1235"],"Connection":["close"],"Content-Type":["application/json"]}
[Response] {"status":400,"meta":{"time":"2016-10-25 09:15:31"},"title":"Invalid Request","errors":"No data received","details":{"error_class":"Symfony\Component\HttpKernel\Exception\BadRequestHttpException"
Run Code Online (Sandbox Code Playgroud)
该测试可与Silex驱动程序一起使用,但在CI服务器上将不可选。我们还检查了Postman,API路由按预期工作,文件已发送且一切正常。
我正在寻找帮助或文档是否可以使用 codeception 转储多个 sql 转储文件,并使用如下配置:
modules:
config:
- Db:
dsn: 'sqlite:./var/cache/test/test.sqlite'
user: ''
password: ''
=> dump: 'tests/_data/*.sql' <=
populate: true
cleanup: true
reconnect: true
Run Code Online (Sandbox Code Playgroud) 根据代码接收文档,您可以在不使用Selenium Server的情况下直接连接到ChromeDriver来在Chrome浏览器中运行测试。
您首先需要安装ChromeDriver,然后通过运行命令启动它chromedriver --url-base=/wd/hub。
目的是--url-base=/wd/hub什么?在任何地方都找不到。
更新
在FAQ部分中提到了ChromeDriver-WebDriver for Chrome文档中的内容,但wd/hub对此没有任何解释。
我正在尝试测试数据库记录检索。我的测试看起来像:
use yii\db\Exception;
class UserTest extends Unit
{
protected $tester;
private $_user;
public function _before()
{
$this->_user = new User();
}
public function testRetrievingFALSE()
{
$this->expectException(Exception::class, function(){
$this->_user->retrieveRecords();
});
}
}
Run Code Online (Sandbox Code Playgroud)
我expectException()在文档中看到了该方法。我的模型方法如下所示:
public function retrieveRecords()
{
$out = ArrayHelper::map(User::find()->all(), 'id', 'username');
if($out)
return $out;
else
throw new Exception('No records', 'Still no records in db');
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下我做错了什么?
In terminal:
Frontend\tests.unit Tests (1) ------------------------------------------------------------------------------------------
x UserTest: Retrieving false (0.02s)
------------------------------------------------------------------------------------------------------------------------
Time: 532 ms, Memory: 10.00MB
There was 1 …Run Code Online (Sandbox Code Playgroud)