WordPress DemoSite

Тестовый сайт для экспериментов и демонстраций возможностей

Codeception фреймворк для тестирования PHP-приложений

Codeception — это мощный фреймворк для тестирования PHP-приложений, который поддерживает unit-, functional- и acceptance-тестирование. Он предоставляет удобный и унифицированный интерфейс для написания тестов, а также интеграцию с популярными инструментами и библиотеками.


Основные типы тестов в Codeception

  1. Unit-тестирование:
  1. Functional-тестирование:
  1. Acceptance-тестирование:

Установка Codeception

Установите Codeception через Composer:

composer require codeception/codeception --dev

После установки выполните команду для инициализации:

php vendor/bin/codecept bootstrap

Эта команда создаст структуру папок и файлов для тестов.


Структура папок Codeception

После инициализации создается следующая структура:

tests/
├── acceptance/
├── functional/
├── unit/
├── _output/
├── _data/
├── _support/
├── acceptance.suite.yml
├── functional.suite.yml
├── unit.suite.yml
└── codeception.yml

Написание тестов

1. Unit-тесты

Unit-тесты пишутся для проверки отдельных методов или классов.

Пример теста:

// tests/unit/ExampleTest.php
class ExampleTest extends \Codeception\Test\Unit
{
    public function testExample()
    {
        $result = 2 + 2;
        $this->assertEquals(4, $result);
    }
}

Запуск unit-тестов:

php vendor/bin/codecept run unit

2. Functional-тесты

Functional-тесты проверяют работу приложения на уровне взаимодействия компонентов.

Пример теста:

// tests/functional/LoginCest.php
class LoginCest
{
    public function _before(FunctionalTester $I)
    {
        // Действия перед каждым тестом
    }

    public function tryToTestLogin(FunctionalTester $I)
    {
        $I->amOnPage('/login');
        $I->fillField('username', 'admin');
        $I->fillField('password', 'password');
        $I->click('Login');
        $I->see('Welcome, admin');
    }
}

Запуск functional-тестов:

php vendor/bin/codecept run functional

3. Acceptance-тесты

Acceptance-тесты проверяют приложение через реальный браузер.

Пример теста:

// tests/acceptance/SignupCest.php
class SignupCest
{
    public function tryToSignup(AcceptanceTester $I)
    {
        $I->amOnPage('/signup');
        $I->fillField('username', 'testuser');
        $I->fillField('email', 'testuser@example.com');
        $I->fillField('password', 'password');
        $I->click('Signup');
        $I->see('Welcome, testuser');
    }
}

Запуск acceptance-тестов:

php vendor/bin/codecept run acceptance

Для acceptance-тестов требуется настроить WebDriver (например, Selenium или ChromeDriver). Это можно сделать в acceptance.suite.yml:

modules:
    enabled:
        - WebDriver:
            url: 'http://localhost'
            browser: chrome

Конфигурация

Каждый тип тестов настраивается в соответствующем конфигурационном файле (например, unit.suite.yml, functional.suite.yml, acceptance.suite.yml).

Пример конфигурации для functional-тестов:

actor: FunctionalTester
modules:
    enabled:
        - \Helper\Functional
        - Yii2:
            part: orm
            entryScript: index-test.php

Вспомогательные классы

Codeception позволяет создавать вспомогательные классы для повторного использования кода. Они находятся в папке tests/_support/Helper/.

Пример:

// tests/_support/Helper/Acceptance.php
namespace Helper;

class Acceptance extends \Codeception\Module
{
    public function login($username, $password)
    {
        $I = $this;
        $I->amOnPage('/login');
        $I->fillField('username', $username);
        $I->fillField('password', $password);
        $I->click('Login');
    }
}

Преимущества Codeception


Заключение

Codeception — это мощный инструмент для тестирования PHP-приложений, который охватывает все уровни тестирования. Он подходит как для небольших проектов, так и для крупных приложений, обеспечивая высокое качество кода и стабильность работы.

Полный стэк: .NET | AMQP | Android | api | Bash | Bootstrap | C++ | cms | Composer | css | Data | Elasticsearch | ESP32 | Git | GraphQL | Gulp | JavaScript | JetStream | Joomla | js | Kotlin | Laravel | LEMP | Linux | LMS | Markdown | MODX | Moodle | MySQL | NATS | Nginx | Node.js | OpenCart | Parsedown | PHP | Python | RabbitMQ | SCSS | SEO | Simpla | SOAP | SQL | startup | Swift | Symfony | Tailwind | Translation | Twig | Ubuntu | Unit | web3 | Webasyst | Webpack | WebSocket | WordPress | XML | Безопасность | Бизнес | блокчейн | Вёрстка | движок | ИИ | интернет-магазин | ЛК | Руководство | ТЗ | фреймворк | Яндекс.Трекер