Yii2 中进行codecepton测试

2016-10-18 Frank PHP

Yii2测试模块据官方文档目前还处于开发阶段,基本的运行如下。补充翻译自文件:tests/README.md

此目录包含高级应用程序的各种测试。

测试目录codeception 是用Codeception PHP Testing Framework开发的.

Doc

创建和设置高级应用程序后,请按照以下步骤准备测试:

  1. 如果没有安装 Codeception 先安装:

    composer global require "codeception/codeception=2.0.*" "codeception/specify=*" "codeception/verify=*"
    

    新版本加了orm 不支持2.0,需要安装2.1

     composer global require "codeception/codeception=2.1.*" "codeception/specify=*" "codeception/verify=*"
    

    如果你没有为全局包使用Composer的话运行composer global status. 应该输出:

    Changed current directory to <directory>
    

    然后将<directory>/vendor/bin加到系统环境变量里。现在你就能在命令行使用codecept命令。

    vim ~/.bash_profile 
    export PATH=~/.composer/vendor/bin:$PATH
    source ~/.bash_profile 
    
    #windows 运行sysdm.cpl ->高级->环境变量->系统变量->Path 进行编辑
    
  2. 通过在根目录文件composer.json添加一下代码来安装faker扩展。

    composer require --dev yiisoft/yii2-faker:*
    
  3. 创建 yii2_advanced_tests 数据库然后通过使用migrations(Yii2提供的迁移工具)更新 :
    默认的迁移文件:console/migrations/m130524_201442_init.php
    https://github.com/pcfreak30/Yii-Migration-Generator/
    迁移工具的使用见:
    ref:http://www.yiifans.com/yii2/guide/db-migrations.html

    yii migrate/create users 
    cd tests/codeception/ && php bin/yii migrate
    

    还是不行,后来直接修改m130524_201442_init.php 中user为users,此处是因为我们之前将表user改为了users。重复上面步骤,运行第五步,成功开始测试。

    php codeception/bin/yii migrate
    
  4. 为了能进行acceptance测试,你需要启动一个web服务器。 最简单的方式是使用PHP内置的webserver。在 common, frontend 等所在的根目录运行下面指令:

    php -S localhost:8080
    
  5. 假如你在 tests/codeception 这个目录,现在你可以通过下面的命令来运行这些测试了 :

    # frontend tests
    cd frontend
    codecept build
    ~/.composer/vendor/bin/codecept build
    codecept run
    
    # backend tests
    
    cd backend
    codecept build
    codecept run 
    
    # etc.
    

    如果你已经为每一个应用运行了codecept build,你可以跳过上面的步骤来通过一句codecept run运行所有的测试。

  6. 修改配置文件
    文件:frontend/acceptance.suite.yml修改如下

    # Codeception Test Suite Configuration
    
    # suite for acceptance tests.
    # perform tests in browser using the Selenium-like tools.
    # powered by Mink (http://mink.behat.org).
    # (tip: that's what your customer will see).
    # (tip: test your ajax and javascript by one of Mink drivers).
    
    # RUN `build` COMMAND AFTER ADDING/REMOVING MODULES.
    
    class_name: AcceptanceTester
    modules:
        enabled:
            - WebDriver
    #        - PhpBrowser
            - tests\codeception\common\_support\FixtureHelper
    # you can use WebDriver instead of PhpBrowser to test javascript and ajax.
    # This will require you to install selenium. See http://codeception.com/docs/04-AcceptanceTests#Selenium
    # "restart" option is used by the WebDriver to start each time per test-file new session and cookies,
    # it is useful if you want to login in your app in each test.
    #        - WebDriver
        config:
    #        PhpBrowser:
    #            url: 'http://localhost:8080'
            WebDriver:
    #            url: 'http://localhost'
                url: 'http://xxx.dev'
                # browser: firefox
                browser: chrome
                restart: false
    
  7. selenium 功能自动化测试工具的使用

    # 分别下载selenium-server-standalone-3.0.0.jar 和chromedriver.exe,运行:
    java -jar selenium-server-standalone-3.0.0.jar 
    chromedriver.exe
    # 测试
    cd frontend
    codecept build
    codecept run
    
    #测试一个文件
    codecept run acceptance unit\models\ContactFormTest.php --report --html
    codecept run function unit\models\ContactFormTest.php --report --html
    codecept run unit unit\models\ContactFormTest.php --report --html
    [codeception 运行testcase 的方式](http://blog.csdn.net/huoba1/article/details/41721345)
    
    #php composer.phar require facebook/webdriver
    

参考资料:
selenium
Working with PHPUnit and Selenium Webdriver
php-webdriver
chromedriver
菜鸟学自动化测试(一)——selenium IDE

标签: 测试

发表评论 登录

Top