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

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

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



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

    На официальном сайте обновлена документация, появились модули для тестирования SOAP и REST веб-сервисов. Заходите, пробуйте, пользуйтесь.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 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
                    Понятно… Спасибо за ответ

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