Help us understand the problem. What is going on with this article?

Modern Testing in PHP な Codeception を触ってみた2

More than 5 years have passed since last update.



  • 1個目は「インストールから Acceptance Test を動かすところまで」
  • 2個目は「Acceptance Test のサンプルと Codeception の導入状況や、情報など」

この記事は Modern Testing in PHP な Codeception を触ってみた2 になります。
Modern Testing in PHP な Codeception を触ってみた1 は以下になります。

Acceptance Test のサンプル

プロジェクトルートに index.php を作って、それをテストしてみます。

$username = 'ゲスト';
if (isset($_POST['username']) && !empty($_POST['username'])) {
$username = $_POST['username'];

<!DOCTYPE html>
<html lang="ja">
    <meta charset="UTF-8">
    <a id="cept-link" href="">ここに詳細があります</a>
    <form action="index.php" method="post">
        <input type="text" name="username">
        <input type="submit" value="クリック">
    <div class="result">
        <?php echo 'こんにちは'.htmlspecialchars($username).'さん'; ?>
// Here you can initialize variables that will for your tests
$username = 'hoge';
$I = new WebGuy($scenario);
$I->see('Codeceptionを触ってみた', 'h1');
$I->see('Codeceptionの特徴は?', 'h2');

$I->see('Modern Testing in PHP');
$I->click('PhpBrowser', 'ul.dropdown-menu > li > a');
$I->see('PhpBrowser Module', 'h1');

$I->see('Codeceptionを触ってみた', 'h1');

$I->see('こんにちはゲストさん', '.result');
$I->fillField('username', $username);
$I->dontSee('こんにちはゲストさん', '.result');
$I->see('こんにちは'.$username.'さん', '.result');

--steps オプションをつけて、各シナリオを表示しつつ、実行した結果は以下

php codecept.phar run acceptance --steps
Codeception PHP Testing Framework v1.6.3.1
Powered by PHPUnit 3.7.21 by Sebastian Bergmann.

Suite acceptance started
Trying to codeceptionで何ができるか確認 (ExampleCept.php)
* I am on page "/"
* I see "Codeceptionを触ってみた","h1"
* I see "Codeceptionの特徴は?","h2"
* I see link "ここに詳細があります"
* I click "#cept-link"
* I am on subdomain "codeception"
* I see "Modern Testing in PHP"
* I click "PhpBrowser","ul.dropdown-menu > li > a"
* I see in current url "/docs/modules/PhpBrowser"
* I see "PhpBrowser Module","h1"
* I move back 
* I move back 
* I am on subdomain "localhost"
* I see "Codeceptionを触ってみた","h1"
* I see "こんにちはゲストさん",".result"
* I fill field "username","hoge"
* I click "クリック"
* I don't see "こんにちはゲストさん",".result"
* I see "こんにちはhogeさん",".result"

Time: 1 second, Memory: 12.25Mb

OK (1 test, 10 assertions)

あと、ここではわかりませんが、ところどころ色付けもされています ( Mac の場合) 。


今回のテストは モジュールに PhpBrowser を使用していますが、
acceptance.suite.yml で、例えば Selenium2 に簡単に変更することもできたり、
Laravel4, Kohana, Symfony, ZF, Yii などの
( 自分はまだ触っていないのでなんとも言えませんが )

Codeception の導入状況や、情報など

Yii2 で導入予定だったり、

また日本語情報としては Laravel Testing Decoded の日本語版にも詳しく載っているみたいです。


とりあえず Codeception で簡単なテストサンプルを書いてみました。
多分今後日本でも流行りそうな予感があるので、かしこい人もっと日本語情報下さい ...

PHP, Yii, Laravel, CakePHP, JavaScript, Vue.js, Nuxt.js, React, Next.js, jQuery, Ruby, Ruby on Rails, Go, Bootstrap, Tailwind CSS とか触ってます
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away