28 июня 2012 в 05:38

Скринкаст: Знакомство с Codeception

Фреймворк для автоматического тестирования веб-приложений на PHP — Codeception живет и развивается. Но в этот раз вместо скупой порции новостей я бы хотел представить вам первый скринкаст в котором показаны азы работы с Codeception. Если вы только читали про Codeception, то вам обязательно стоит взглянуть на него в действии. Ну а если не читали, но у вас есть веб-сайт, который бы вы хотели протестировать — тоже взгляните.

Раньше было трудно показать простоту работы с Codeception. Всё обламывалось об старый добрый PEAR, который не совсем дружелюбен к разработчикам. Но теперь Codeception запакован в один исполняемый phar-архив и его установка сводится к «скачать и запустить».



Disclaimer: диктор из меня никакущий, кодить и рассказывать свои действия тоже достаточно тяжело. Я специально решил не начитывать текст поверх видео, а писать живьем, чтобы не отдавало постановкой. Потому прошу прощения за заикания и запинки.

На официальном сайте обновлена документация, появились модули для тестирования SOAP и REST веб-сервисов. Заходите, пробуйте, пользуйтесь.
Davert @Davert
карма
115,8
рейтинг 0,0
Пользователь
Самое читаемое Разработка

Комментарии (15)

  • 0
    Хорошая тулза, возможности, показанные в презентации, понравились.
    Обязательно посмотрю на выходных
  • 0
    Спасибо, заинтересовало. Обязательно попробую в свободное время.
  • +1
    Именно этого не хватало для того, чтобы попробовать использовать сию дивную штуку.
    • 0
      Я тоже так думал )
  • 0
    просмотрел мельком документацию, но не нашел ответа на свой вопрос: Умеет ли codeception работать с параметрами передаваемыми из командной строки?
    • 0
      Смотря какими параметрами. Можно уточнить?

      Вот тут про работу с командной строкой:
      codeception.com/docs/reference/commands
      • 0
        это не то :)
        Меня интересуют параметры которые можно извлечь во время выполнения теста.
        Простой пример. Мне нужно при помощи селениума загрузить файл через соответствующую форму. В зависимости от различных внешних условий файлы могут быть разные. Хотелось бы использовать для этой процедуры один тест и передавать ему например имя файла.
        • 0
          Интересный use-case.

          В чем ограничение. Symfony Console Component не дает возможность указывать сколько угодно параметров. Только стандартные. В остальном же всё вполне можно реализовать. Я бы попытался зашить как-то параметры в БД или в файл или как-то их PHP-скриптом подгонять. Теоретически можно и консоль расширить под эту задачу, но это слишком кастомное решение, делать его стандартным нет смысла.
          • 0
            Получается что все тесты строго статические, что достаточно печально.
            Опишу проблему подробнее. Имеется некоторая система отчетности, которая единообразно принимает на вход множество отчетов, но в зависимости от типа отчета производит различные преобразования с данными. Типов отчетов достаточно много и писать на каждый тип отдельный тест неприемлемо. Хотелось бы покрыть все одним тестом, который будет запускаться при помощи CI с различными опциями в зависимости от того какая сборка запущена, на какой среде и т.п.

            Может посоветуете как в такой ситуации быть?
            • 0
              Простого решения не посоветую, но можно передавать параметры через ENV переменные…
              У вас на каждый тип теста есть свои модули. Хэлперы.
              codeception.com/docs/03-Modules#helpers
              Там в методе _before мы принимаем параметры, сохраняем их.
              А дальше прописываем свой метод тестирования в этом классе.
              Запускаем команду «build» и метод будет добавлен в WebGuy.
  • 0
    Спасибо! уже внедрил в проект)

    только перенёс codeception.yml и codecept.phar в саму папку tests
    конфиг помнял на

    paths:
        tests: .
        log: ./_log
        data: ./_data
        helpers: ./_helpers
    settings:
        bootstrap: _bootstrap.php
        suite_class: \PHPUnit_Framework_TestSuite
        colors: true
        memory_limit: 1024M
        log: true
    modules:
        config:
            Db:
                dsn: ''
                user: ''
                password: ''
                dump: ./_data/dump.sql
    

    запускается теперь так
    php tests/codecept.phar run
  • 0
    Удобный инструмент. Спасибо.
    P.S. Возник вопрос, возможно ли при вызове метода хэлпера вернуть результат, чтоб его можно было использовать в сценарии тестирования?
    • 0
      Увы, нет. Может в следующих версиях будет…
      Пока лучше результат сохранить в самом хэлпере, а потом дополнительно написать метод, который будет использовать этот результат.
      • 0
        Понятно… Спасибо за ответ
        • 0
          Ответ неправильный, да? Давайте поменяю :)

          Так вот, можно

          <?php
          $user_name = $I->grabTextFrom('#user_name');
          $I->fillField('username', $user_name);
          ?>
          


          Подробнее о последнем апдейте: codeception.com/08-07-2012/major-codeception-update.html

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.