Учебники

Yii — Тестирование

Когда мы пишем класс 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

Вы увидите следующий вывод —