Codeception - 验收测试有效,但功能测试无效
Posted
技术标签:
【中文标题】Codeception - 验收测试有效,但功能测试无效【英文标题】:Codeception - Acceptance tests work but Functional test don't 【发布时间】:2013-06-10 22:58:35 【问题描述】:我在 WAMP 平台上运行最新版本的 Codeception - 我的接受是非常基本的,但工作正常(见下文):
$I = new WebGuy($scenario);
$I->wantTo('Log in to the website');
$I->amOnPage('/auth/login');
$I->fillField('identity','admin@admin.com');
$I->fillField('password','password');
$I->click('Login');
简而言之 - 它检查页面是否为“身份验证/登录”,填写 2 个表单字段并单击登录按钮。这工作没有任何问题。
这是我相同的功能测试:
$I = new TestGuy($scenario);
$I->wantTo('perform actions and see result');
$I->amOnPage('/auth/login');
$I->fillField('identity','admin@admin.com');
$I->fillField('password','password');
$I->click('Login');
当我从命令行运行时,我收到以下错误(不是完整的错误,但足以理解问题):
1) Couldn't <-[35;1mperform actions and see result<-
[0m in <-[37;1LoginCept.php<-[0m <-41;37mRuntimeException:
Call to undefined method TestGuy::amOnPage<-[0m.......
我的 Acceptance 套件启用了“PhpBrowser”和“WebHelper”模块,功能套件启用了“FileSystem”和“TestHelper”(在acceptance.suite.yml 和functional.suite.yml 文件中)
显然 amOnPage() 函数是问题所在 - 但是我被引导相信 amOnPage() 应该在验收和功能测试中工作?或者我错了 - 也 - 有人可以解释这些数字的含义,例如出现的“
更新:我尝试将“WebHelper”模块添加到functional.suite.yml,但我没有看到在TestGuy.php 文件中自动生成amOnPage() - 有什么想法吗?
我的配置文件如下:
WebGuy
class_name: WebGuy
modules:
enabled:
- PhpBrowser
- WebHelper
config:
PhpBrowser:
url: 'http://v3.localhost/'
TestGuy
class_name: TestGuy
modules:
enabled: [Filesystem, TestHelper, WebHelper]
【问题讨论】:
【参考方案1】:嗯,就是这样,因为 TestGuy 没有这些方法。所有这些方法都在 PhpBrowser、Selenium2 模块或其他继承自 Codeception Mink 实现的模块中。所以你需要在模块部分的功能套件中添加 PhpBrowser,然后运行codecept build
命令。
还要注意,最好使用 Selenium2 模块进行验收测试,使用 PhpBrowser 进行功能测试。主要思想是验收(Selenium2)测试必须涵盖应用程序的那些部分,功能(PhpBrowser)测试无法涵盖的部分,例如一些js交互。
【讨论】:
感谢@Elkan 我已将“PhpBrowser”添加到我的functional.suite.yml 文件并运行“codecept build”命令并收到“PhpBrower 模块未配置!模块 PhpBrowser 未配置。请检查它的必填字段。关于我从这里做什么的任何想法? 注意.. 我正在使用 CodeIgniter.. 我发现目前还没有一个模块 :( 是的,目前没有可用的CI模块,但是使用PhpBrowser进行功能测试,使用PhpBrowser(基于curl)和框架原生模块(基于symfony浏览器)速度差异不大-成套工具)。回到错误,你需要配置PhpBrowser,见codeception站点上的模块文档:) 对于其他有同样问题的人 - 这里是 PhpBrowser codeception.com/docs/modules/PhpBrowser的链接 如果对其他人有帮助:pastebin.com/afSnMPpTpastebin.com/CiVmmaH8【参考方案2】:关于'<-[35;1m'
启动脚本codecept run --no-colors
以从控制台输出中删除'<-[35;1m'
【讨论】:
以上是关于Codeception - 验收测试有效,但功能测试无效的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 selenium 和 codeception 检测验收测试中的 dom 变化