前言
codeception是一套基于php的网站服务测试工具,其简洁的语法与易用性非常推荐大家使用。
官方网址:codeception.com ,他的家族还有另外一套 codecept.io 是基于NodeJS的,有兴趣的小夥伴可以自行研究一下。
在进行网站测试的同时,有时我们会需要等待页面渲染完成,或是需要预览用户实际上看到的视图,单纯使用curl无法满足我们需求时,这时就是模拟器上场的时候。
一般的情况下,codecept所使用的是Symfony模组用来处理各种页面的呼叫,而使用到REST模组时,预设会使用PhpBrowser,而当我们有需要预览视图或是撷取画面的时候,这时候就是使用WebDriver模组的时候了。
这边我们以phantomjs这套为例:
因为我要测试的网站有桌机版跟行动版,其判读方式透过浏览器的useragent,所以在呼叫模组的时候必须进行设置。
以下为范例
1.首先我们需要创建一个测试环境
在命令列执行下面的指令,当然mobile可以替换成实际专案的名称
codecept generate:suite mobile
会得到类似下面的内容
Helper \Helper\Mobile was created in /home/user/codecept/project/tests/_support/Helper/Mobile.php
Actor MobileTester was created in /home/user/codecept/project/tests/_support/MobileTester.php
Suite config mobile.suite.yml was created.
Next steps:
1. Edit mobile.suite.yml to enable modules for this suite
2. Create first test with generate:cest testName ( or test|cept) command
3. Run tests of this suite with codecept run mobile command
2.设置 mobile.suite.yml 内容
class_name: MobileTester
modules:
enabled:
- \Helper\Server
- WebDriver:
url: http://yourTestUrl
host: '127.0.0.1'
port: 4444
window_size: '360x640''
capabilities:
phantomjs.page.settings.userAgent: "Mozilla/5.0 (Linux; Android 6.0; Redmi Note 4 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.91 Mobile Safari/537.36"
WebDriver下的设定值说明:
url : 要测试的网站网址
host : phantomjs的网址
port : phantomjs预设的port
window_size : 模拟的装置解析度
capabilities: (设定套件的参数)
phantomjs.page.settings.userAgent : 设置phantomjs的userAgent
官方文件在这边说的不是很清楚,不过笔者是使用上述的设置来模拟行动装置的,至于userAgent的值可以各种自行代换,这边用的是小米Note4的浏览器。
3.执行你的测试
codecept run mobile
官方的测试范例都还蛮易读的,就不多做赘述,只是推荐一款好用的工具给大家,至于要怎么启用phantomjs的话,可以参考 http://phantomjs.org/download.html
下载解压执行:
./phantomjs --webdriver=4444
然后看到下面的信息:
[INFO - 2017-02-13T08:13:08.551Z] GhostDriver - Main - running on port 4444
就表示你已经成功启动了。
祝大家玩的愉快~当然也欢迎小夥伴留言讨论~