使用php + codeception + phantomjs进行慢速运行验收测试

时间:2014-08-08 04:16:27

标签: testing phantomjs codeception

我正在转向使用codeception 2.0.3在我正在开发的各种Web平台上进行一些测试。我开始做一些验收测试。主要检查页面确定和做一些表单完成(登录,注册,没有花哨)。

我一直在使用firefox浏览器监控测试,现在我们正在将测试转移到专用服务器上,所以我切换到phantomjs作为我的测试浏览器。

在acceptance.suite.yml中配置

WebDriver:
  url: 'localUrl'
  browser: phantomjs 
  window_size: 'maximize'
  capabilities:
      phantomjs.cli.args: ['--ignore-ssl-errors=true']

问题是,通过这种无头配置,测试运行速度非常慢。我的意思是,我写的测试是检查四个链接是否正常(没有错误或异常消息)没有任何花哨的断言(我可以在不到20秒的时间内检查)并且它花了超过一分钟的时间。

我在测试堆栈的配置中遗漏了什么?我读到phantomjs以这种方式进行测试的目的是提供快速可靠的东西,这些东西可以在开发过程中集成,但我似乎并没有让它正常工作。我一直在使用Smalltalk进行TDD,也许我对这种环境中的工作方式有点偏颇,所以也许我的期望值太高但我希望这可能会更快,更容易实现。

我在使用php 5.5的linux机器上使用带有phantomjs 1.9.7的codeception 2.0.3。

欢迎任何建议。感谢!!!

3 个答案:

答案 0 :(得分:2)

我的运行测试非常慢,并开始使用严格的定位器。这加快了很多事情。

而不是写作:

$I->fillField('username, 'john');

在实际工作之前尝试失败许多定位器类型,指定你正在使用的定位器并写:

$I->fillField(['id' => 'username'], 'john');

$I->fillField(['class' => 'username'], 'john');

$I->fillField(['css' => 'input .username'], 'john');

请在此处阅读:http://codeception.com/docs/04-AcceptanceTests#Click

答案 1 :(得分:1)

可能是phantomjs的问题,通常无头的Codeception PhpBrowser非常快,尝试切换到它。

对于浏览器中的尝试使用Codeception WebDriver +最新的selenium 2独立版。

此外,如果您正在使用某个框架进行开发,则可以检查它是否存在于Codeception模块列表中。如果是这样你可以使用它,它运行速度比PhpBrowser快得多,因为它不需要任何服务器,并且可以使用symfony dom - crawler和browser - kit。

答案 2 :(得分:0)

数据库sql文件的大小也很重要。在我的情况下,导入一些大表会导致额外的时间超过一分钟。