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. В папке с проектом
тогда в консоли
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 на тестовое
после этого из папки
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
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
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 needleparam
$needleparam
$haystackparam string
$message
assertEmpty
Checks that variable is empty.param
$actualparam string
$message
assertEquals
Checks that two variables are equal.param
$expectedparam
$actualparam string
$message
assertFalse
Checks that condition is negative.param
$conditionparam string
$message
assertFileExists
Checks if file existsparam string
$filenameparam string
$message
assertFileNotExists
Checks if file doesn’t existparam string
$filenameparam string
$message
assertGreaterThan
Checks that actual is greater than expectedparam
$expectedparam
$actualparam string
$message
assertGreaterThanOrEqual
Checks that actual is greater or equal than expectedparam
$expectedparam
$actualparam string
$message
assertGreaterThen
deprecated
assertGreaterThenOrEqual
deprecated
assertLessThan
Checks that actual is less than expectedparam
$expectedparam
$actualparam string
$message
assertLessThanOrEqual
Checks that actual is less or equal than expectedparam
$expectedparam
$actualparam string
$message
assertNotContains
Checks that haystack doesn’t contain needle.param
$needleparam
$haystackparam string
$message
assertNotEmpty
Checks that variable is not empty.param
$actualparam string
$message
assertNotEquals
Checks that two variables are not equalparam
$expectedparam
$actualparam string
$message
assertNotNull
Checks that variable is not NULLparam
$actualparam string
$message
assertNotRegExp
Checks that string not match with patternparam string
$patternparam string
$stringparam string
$message
assertNotSame
Checks that two variables are not sameparam
$expectedparam
$actualparam string
$message
assertNull
Checks that variable is NULLparam
$actualparam string
$message
assertRegExp
Checks that string match with patternparam string
$patternparam string
$stringparam string
$message
assertSame
Checks that two variables are sameparam
$expectedparam
$actualparam string
$message
assertTrue
Checks that condition is positive.param
$conditionparam string
$message
fail
Fails the test with message.param
$message
Комментарии
Отправить комментарий