Содержание

, ,

Codeception - Тестирование

Установка

Описание

Фреймворк для автоматического тестирования веб-приложений на PHP — Codeception живет и развивается. Но в этот раз вместо скупой порции новостей я бы хотел представить вам первый скринкаст в котором показаны азы работы с Codeception. Если вы только читали про Codeception, то вам обязательно стоит взглянуть на него в действии. Ну а если не читали, но у вас есть веб-сайт, который бы вы хотели протестировать — тоже взгляните.

Создание

$ ./vendor/bin/codecept bootstrap ./frontend
$ ./vendor/bin/codecept bootstrap ./vendor/mirocow/yii2-notification

Создает папку tests с конфигурационными файлами

$ ls -la ./vendor/mirocow/yii2-notification/tests
total 12
drwxr-xr-x 1 vagrant vagrant 374 Jul  7 22:34 .
drwxr-xr-x 1 vagrant vagrant 476 Jul  7 22:34 ..
drwxr-xr-x 1 vagrant vagrant  68 Jul  7 22:34 acceptance
-rw-r--r-- 1 vagrant vagrant 347 Jul  7 22:34 acceptance.suite.yml
drwxr-xr-x 1 vagrant vagrant 102 Jul  7 22:34 _data
drwxr-xr-x 1 vagrant vagrant  68 Jul  7 22:34 functional
-rw-r--r-- 1 vagrant vagrant 360 Jul  7 22:34 functional.suite.yml
drwxr-xr-x 1 vagrant vagrant 102 Jul  7 22:34 _output
drwxr-xr-x 1 vagrant vagrant 238 Jul  7 22:34 _support
drwxr-xr-x 1 vagrant vagrant 102 Jul  7 22:43 unit
-rw-r--r-- 1 vagrant vagrant 161 Jul  7 22:34 unit.suite.yml

В которой будут создыны 3 кипа конфигураций: unit, functional, acceptance

Описание

Проверка и настройка тестовго окружения

Проверка конфигурации

$ ./vendor/bin/codecept -c ./vendor/mirocow/yii2-queue config:validate
$ cd /app
$ ls -la ./tests/codeception/common/
total 16
drwxr-xr-x 1 vagrant vagrant 340 Jul  7 21:39 .
drwxr-xr-x 1 vagrant vagrant 340 Jul  7 21:39 ..
-rwxr-xr-x 1 vagrant vagrant 548 Jul  5 13:53 _bootstrap.php
-rwxr-xr-x 1 vagrant vagrant 266 Jul  5 13:53 codeception.yml
drwxr-xr-x 1 vagrant vagrant 102 Jul  7 21:39 _data
-rwxr-xr-x 1 vagrant vagrant 141 Jul  5 13:53 .gitignore
drwxr-xr-x 1 vagrant vagrant 102 Jul  5 13:53 _output
drwxr-xr-x 1 vagrant vagrant 136 Jul  7 22:09 _support
drwxr-xr-x 1 vagrant vagrant 136 Jul  7 22:11 unit
-rwxr-xr-x 1 vagrant vagrant 152 Jul  5 13:53 unit.suite.yml

Запуск тестов

Обязательно после run уазать конфигурацию/Sute запускаемого теста Базовые конфигурации: unit, functional, acceptance Конфигурация/Sute берется из корня папки с запускаемыми скриптами и носит название *.suite.yml. В этой же папке должен находится базовый конфигурационный файл
Если указан полный путь до тесового файла, то не надо указывать suite
$ codecept run ./tests/acceptance/MyCept.php

Подробнее...

Параметры

Наборы тестов / Suite

Юнит тесты / unit

проверяет что отдельный модуль кода работает верно

Предварительная сборка тестов

$ ./vendor/bin/codecept build

Создание

$ ./tests/codeception/common generate:test unit UserTest -vvv

Запуск

Запуск всех тестов из выбранной апликации

$ ./vendor/bin/codecept -c ./common run unit -vvv
$ ./vendor/bin/codecept -c ./frontend run unit -vvv
$ ./vendor/bin/codecept -c ./backend run unit -vvv

Запуск указанных тестов

$ cd /app
$ ./vendor/bin/codecept -c ./common run unit models/LoginFormTest.php

Аналогично запускаются тесты из frontend и backend

Функциональные тесты / functional

проверяет пользовательские сценарии через эмуляцию браузера

Предварительная сборка тестов

$ ./vendor/bin/codecept build

Создание

$ ./vendor/bin/codecept -c ./frontend generate:cept functional UserFormCept
$ ./vendor/bin/codecept -c ./frontend generate:cest functional UserFormCept
Cept - Записывается в виде сценария
<?php    
$I = new AcceptanceTester($scenario);
$I->wantTo('log in as regular user');
$I->amOnPage('/login');
$I->fillField('Username','john');
$I->fillField('Password','secret');
$I->click('Login');
$I->see('Hello john');
Cest - Записывается в виде PHP класса
<?php
class UserCest
{
    public function loginAsRegularUser(\AcceptanceTester $I) 
    {
        $I->wantTo('log in as regular user');
        $I->amOnPage('/login');
        $I->fillField('Username','john');
        $I->fillField('Password','secret');
        $I->click('Login');
        $I->see('Hello john');            
    }
}

Запуск

Запуск всех тестов из выбранной апликации

$ ./vendor/bin/codecept -c ./frontend run functional -vvv
$ ./vendor/bin/codecept -c ./backend run functional -vvv

Запуск указанных тестов

$ cd /app
$ ./vendor/bin/codecept -c ./backend run functional LoginCest

Приёмочное тестирование / acceptance

проверяет пользовательские сценарии в браузере

Предварительная сборка тестов

$ ./vendor/bin/codecept build

Запуск

$ 

Модули

Модули codeception распологаются в папке ./vendor/codeception/base/src/Codeception/Module

Компоненты

$ composer require "codeception/base": "^2.2.3",
$ composer require "codeception/codeception=2.1.*"
$ composer require "codeception/specify=*"
$ composer require "codeception/verify=*"

Статьи / Документация

Сервисы для тестирования

Travis

nano .travis.yml



Видео