Когда мы пишем класс PHP, мы отлаживаем его шаг за шагом или используем операторы die или echo, чтобы проверить, как он работает. Если мы разрабатываем веб-приложение, мы вводим тестовые данные в формы, чтобы обеспечить правильную работу страницы. Этот процесс тестирования может быть автоматизирован.
Автоматический тестовый подход имеет смысл для долгосрочных проектов, которые —
- Сложный и большой
- Постоянно растет
- Слишком дорого с точки зрения стоимости отказа
Если ваш проект не становится сложным и относительно простым, или это просто разовый проект, то автоматизированное тестирование может быть излишним.
Подготовка к тестам
Шаг 1 — Установите платформу Codeception. Запустите следующий код.
composer global require "codeception/codeception = 2.0.*" composer global require "codeception/specify = *" composer global require "codeception/verify = *"
Шаг 2 — Запустите следующее.
composer global status
Вывод «Изменен текущий каталог на <каталог>». Вы должны добавить ‘<directory> / vendor / bin’ в переменную PATH. В этом случае запустите следующий код —
export PATH = $PATH:~/.composer/vendor/bin
Шаг 3 — Создайте новую базу данных с именем ‘yii2_basic_tests’ .
Шаг 4 — Внутри каталога тестов запустите.
codeception/bin/yii migrate
Конфигурация базы данных может быть найдена в tests / codeception / config / config.php .
Шаг 5 — Постройте наборы тестов через.
codecept build
арматура
Основная цель приборов — установить среду в неизвестном состоянии, чтобы ваши тесты работали ожидаемым образом. Yii предоставляет почти каркас крепления. Ключевой концепцией каркаса светильника Yii является объект светильника. Он представляет определенный аспект тестовой среды. Объект fixture является экземпляром класса yii \ test \ Fixture .
Чтобы определить фикстуру, вы должны создать новый класс и расширить его из yii \ test \ Fixture или yii \ test \ ActiveFixture. Первый лучше подходит для приборов общего назначения, а второй специально предназначен для работы с базой данных и ActiveRecord.
Модульные тесты
Модульные тесты помогут вам протестировать отдельные функции. Например, модельные функции или класс компонентов.
Шаг 1 — Создайте новый прибор в файле ExampleFixture.php в каталоге tests / codeception / fixtures .
<?php namespace app\tests\codeception\fixtures; use yii\test\ActiveFixture; class ExampleFixture extends ActiveFixture { public $modelClass = ‘app⊨’MyUser'; } ?>
Шаг 2 — Затем создайте новый тестовый файл с именем ExampleTest.php в папке tests / codeception / unit / models.
<?php namespace tests\codeception\unit\models; use app\models\MyUser; use yii\codeception\TestCase; class ExampleTest extends TestCase { public function testCreateMyUser() { $m = new MyUser(); $m->name = "myuser"; $m->email = "[email protected]"; $this->assertTrue($m->save()); } public function testUpdateMyUser() { $m = new MyUser(); $m->name = "myuser2"; $m->email = "[email protected]"; $this->assertTrue($m->save()); $this->assertEquals("myuser2", $m->name); } public function testDeleteMyUser() { $m = MyUser::findOne(['name' => 'myuser2']); $this->assertNotNull($m); MyUser::deleteAll(['name' => $m->name]); $m = MyUser::findOne(['name' => 'myuser2']); $this->assertNull($m); } } ?>
В приведенном выше коде мы определяем три теста —
- testCreateMyUser,
- testUpdateMyUser и
- testDeleteMyUser.
Мы только что создали нового пользователя, обновили его имя и пытаемся удалить его. Мы управляем моделью MyUser с точки зрения базы данных yii2_basic_tests, которая является полной копией нашей реальной БД.
Шаг 3 — Чтобы запустить тесты , перейдите в папку тестов и запустите.
codecept run unit models/ExampleTest
Следует пройти все тесты. Вы увидите следующее —
Функциональные тесты
Функциональные тесты помогут вам в —
- тестирование приложения с помощью эмулятора браузера
- убедитесь, что функция работает правильно
- взаимодействовать с базой данных
- отправлять данные в серверные скрипты
Внутри тестовой папки запустите —
generate:cept functional AboutPageCept
Приведенная выше команда создает файл AboutPageCept.php в папке tests / codeception / functions. В этом функциональном тесте мы собираемся проверить, существует ли наша страница о программе .
Шаг 1 — Изменить файл AboutPageCept.php .
<?php $I = new FunctionalTester($scenario); $I->wantTo('perform actions and see result'); $I->amOnPage('site/about'); $I->see('about'); $I->dontSee('apple'); ?>
В приведенном выше коде мы проверили, находимся ли мы на странице about. Очевидно, мы должны увидеть слово «около», а не «яблоко» на странице.
Шаг 2 — Запустите тест через.
run functional AboutPageCept
Вы увидите следующий вывод —