Рубрики
Uncategorized

Кодовый Рецепт Для Чайников: Часть 2: Понятия

Пошаговое руководство для людей, не знакомых с концепцией и, возможно, автоматизированным тестированием в целом. В части 2 мы рассмотрим концепции, которые Codeception использует при тестировании. С пометкой php, тестирование, концепция.

В

Кодекс Для Чайников: Часть 1: Обзор

кайзер шахид ・ 21 марта 18 ・ 3 минуты чтения

Теперь я собираюсь поговорить о концептуальном подходе к тестированию. Понимание этого будет ключом к структурированию ваших реальных тестов.

Действующие лица (Подразделения, Функциональные, Наемные Головорезы Сороса, Что Угодно)

Тесты выполняются с точки зрения актера . У актера есть определенные ожидания:

С точки зрения кода, на самом деле это может выглядеть так:

  • $$html = $Я->хочу Контент С Url('http://www.google.com ')
  • $$Я->хочу найти элемент("ввод[заголовок='Поиск']", $html)
  • $I->Утверждения(4, квадрат(2), "неожиданное значение для квадрата(2)");

Каждый набор тестов имеет уникального участника (например, Функциональный тестер ).

Помощники

Помощники – это Модули кодирования – это классы, содержащие методы, которые может использовать субъект. Каждый набор тестов может определять помощников, которые загружаются в субъекта.

На практике Codecept будет генерировать признак со всеми методами от всех включенных помощников и передавать каждый метод классу, фактически его реализующему. Затем класс actor использует это черта характера .

Концепции

Это самый простой тип теста. По сути, это просто сценарий:

I am on page 'http://www.google.com'
I see element 'input[title="Search"]'
I set value to 'input[title="Search"]', 'kaiser'
I click 'input[value="Google Search"]'
I get sent to 'https://www.google.com/search?q=kaiser'

(Кстати, вы действительно можете писать такие концепции.)

В этом примере мы делаем предположение Я нахожусь на странице сохраняет HTML где-нибудь, где другие шаги могут ссылаться на него.

Если вам нужен более точный контроль, вы можете преобразовать его в PHP:

amOnPage('http://www.google.com');

$searchEle = 'input[title="Search"]';
$I->seeElement($searchEle);
$I->setValueTo($searchEle, 'kaiser');
$I->click('input[value="Google Search"]');
$I->getSentTo('https://www.google.com/search?q=kaiser');
?>

Для самых простых сценариев напишите “принять”.

Сундуки

Если вам нужно сгруппировать свои шаги для лучшего повторного использования, напишите приведение:

startNewSession();
        $I->amOnPage($url);
    }

    public function checkForSearchBox(FunctionalTester $I) {
        $this->_fetchStep($I, 'http://www.google.com');
        $I->seeElement('input[title="Search"]');
    }

    public function doSearch(FunctionalTester $I) {
        $this->_fetchStep($I, 'http://www.google.com');
        $I->setValueTo('input[title="Search"]', 'kaiser shahid');
        $I->click('input[value="Google Search"]');
        $I->getSentTo('https://www.google.com/search?q=kaiser');
    }
}
?>

Сундуки позволяют собирать несколько связанных сценариев вместе и позволяют повторно использовать общие шаги. Обратите внимание, что любая функция, начинающаяся с _ , не считается тестом, поэтому префикс любых методов, которые вы не хотите автоматически выполнять.

Классы Cest должны заканчиваться на Cest , но по умолчанию они могут быть обычными объектами.

Обратите внимание, что Codecept делает инъекцию зависимостей для кошек! Функциональный тестер $ Я заставлю Codecept искать Функциональный тестер , и если он будет найден, инициализируйте его, прежде чем передавать методу, который он собирается выполнить. Мы подробнее поговорим об этом в одной из будущих статей.

Модульный тест

Это то, к чему вы, вероятно, привыкли:

assertEquals(4, square(2), "unexpected result for square(2)");
    }
}
?>

Обратите внимание, что субъект больше не является явным – его методы автоматически доступны классу (возможно, через __вызов ).

Классы модульных тестов должны заканчиваться на Test и расширяться \Codeception\Test\Unit . Тестовые сценарии должны начинаться с test .

Вывод

В каждом наборе тестов есть актер. Субъект использует 1 или более помощников для предоставления утверждений авторов тестов и других методов, полезных для этого набора. Тесты могут быть очень простыми сценариями (Cept), сценариями различной сложности (Cest) или традиционными модульными тестами.

Оригинал: “https://dev.to/kaisershahid/codecept-for-dummies-part-2-concepts-1idk”