В
Кодекс Для Чайников: Часть 1: Обзор
кайзер шахид ・ 21 марта 18 ・ 3 минуты чтения
Теперь я собираюсь поговорить о концептуальном подходе к тестированию. Понимание этого будет ключом к структурированию ваших реальных тестов.
Действующие лица (Подразделения, Функциональные, Наемные Головорезы Сороса, Что Угодно)
Тесты выполняются с точки зрения актера . У актера есть определенные ожидания:
- Я хочу получить содержимое Я хочу получить содержимое
- Я хочу убедиться, что есть окно поиска
- Я хочу проверить, есть ли
квадрат(2)
С точки зрения кода, на самом деле это может выглядеть так:
$$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”