Yii 2 Codeception

https://habrahabr.ru/post/254509/
http://allframeworks.ru/codeception/00-Install.html
https://github.com/githubjeka/yii2-tutorial/blob/master/scripts/steps/step-001.0.md
http://www.elisdn.ru/blog/84/seo-service-on-yii2-application-testing
http://onedev.net/post/429
http://yiiframework.ru/forum/viewtopic.php?t=19242

1.пример на основании basic

читаем \tests\README.md

здесь предлагается

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

   composer global status

получаете что то вроде на Windows

> composer global status
Changed current directory to C:/Users/des1roer/AppData/Roaming/Composer
No local changes

2. На самом деле если у вас OpenServer установлен на другом диске то так делать не надо.

2. Если у вас OpenServer, и прописан путь до PHP. В папке с проектом

composer require "codeception/codeception:*"

тогда в консоли

php I:\OpenServer\domains\yii2basic\vendor\codeception\codeception\codecept -v

получите

теперь можно попробовать запустить стандартные тесты

переходим в tests

cd I:\OpenServer\domains\yii2basic\tests

и из папки tests запускаем

php I:\OpenServer\domains\yii2basic\vendor\codeception\codeception\codecept run functional

тесты пошли

для записи данных поправьте подключение в \tests\codeception\config\config.php на тестовое

после этого из папки
  • \tests\codeception\bin 
запустить php yii migrate

4. Свой UnitTest

генерим

> php I:\OpenServer\domains\yii2itmh\vendor\codeception\codeception\codecept generate:test unit models\Behavior

Test was created in I:\OpenServer\domains\yii2itmh\tests\codeception\unit\models\BehaviorTest.php

первый тест создан

примитивный тест на наличие данных в базе

\tests\codeception\unit\models\BehaviorTest.php

namespace models;

use app\modules\video\models\Actor;
use yii\helpers\ArrayHelper;

class BehaviorTest extends \yii\codeception\DbTestCase {
    // tests
    public function testMe()
    {
        $model = new Actor;
        $res = ArrayHelper::map($model::find()->all(), 'id', 'name');
        codecept_debug($res);
    }
}

результат






РЕЗЮМЕ


А на самом деле все просто (на примере Windows)

1. Нужно установить codeception (глобально или в проект)

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

2. Проверить командой

 php path\to\vendor\codeception\codeception\codecept -v

3.Перейти в папку tests

cd path\to\tests

4.Настройка

файл \tests\codeception\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:
        - PhpBrowser
# 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:
# PLEASE ADJUST IT TO THE ACTUAL ENTRY POINT WITHOUT PATH INFO
            url: http://yii2itmh/index-test.php //вот здесь реальный путь до приложения
      # WebDriver:
        #    url: http://yii2itmh/index-test.php 
         #   browser: firefox
        #    restart: true

в файле\tests\codeception\config\config.php
указать путь к тестовой базе

командой из папки   \tests\codeception\bin

php  yii migrate

применить миграции

5. Запуск из папки tests

php path\to\vendor\codeception\codeception\codecept run


ASSERTS
http://codeception.com/docs/modules/Asserts#.VvN4znpmoWU

assertContains

Checks that haystack contains needle
  • param $needle
  • param $haystack
  • param string $message

assertEmpty

Checks that variable is empty.
  • param $actual
  • param string $message

assertEquals

Checks that two variables are equal.
  • param $expected
  • param $actual
  • param string $message

assertFalse

Checks that condition is negative.
  • param $condition
  • param string $message

assertFileExists

Checks if file exists
  • param string $filename
  • param string $message

assertFileNotExists

Checks if file doesn’t exist
  • param string $filename
  • param string $message

assertGreaterThan

Checks that actual is greater than expected
  • param $expected
  • param $actual
  • param string $message

assertGreaterThanOrEqual

Checks that actual is greater or equal than expected
  • param $expected
  • param $actual
  • param string $message

assertGreaterThen

  • deprecated

assertGreaterThenOrEqual

  • deprecated

assertLessThan

Checks that actual is less than expected
  • param $expected
  • param $actual
  • param string $message

assertLessThanOrEqual

Checks that actual is less or equal than expected
  • param $expected
  • param $actual
  • param string $message

assertNotContains

Checks that haystack doesn’t contain needle.
  • param $needle
  • param $haystack
  • param string $message

assertNotEmpty

Checks that variable is not empty.
  • param $actual
  • param string $message

assertNotEquals

Checks that two variables are not equal
  • param $expected
  • param $actual
  • param string $message

assertNotNull

Checks that variable is not NULL
  • param $actual
  • param string $message

assertNotRegExp

Checks that string not match with pattern
  • param string $pattern
  • param string $string
  • param string $message

assertNotSame

Checks that two variables are not same
  • param $expected
  • param $actual
  • param string $message

assertNull

Checks that variable is NULL
  • param $actual
  • param string $message

assertRegExp

Checks that string match with pattern
  • param string $pattern
  • param string $string
  • param string $message

assertSame

Checks that two variables are same
  • param $expected
  • param $actual
  • param string $message

assertTrue

Checks that condition is positive.
  • param $condition
  • param string $message

fail

Fails the test with message.
  • param $message


Популярные сообщения из этого блога

Пишем логи на C# (.NET). Легкий способ.

Средства для работы с базой данный PostgreSql

Авторизация yii 2 из базы