#author("2020-02-11T21:19:07+09:00","default:haikikyou","haikikyou")
#author("2020-02-11T21:51:22+09:00","default:haikikyou","haikikyou")
[[moritetuのIT関連技術メモ]]

#contents

* cram [#sea1d124]

pythonで書かれた、コマンドラインベースのプログラムのテストに有用なテストツール。~
特徴的なのは、実行コマンドと結果をターミナルの実行結果のような記述で書けるところである。~
どのようなコマンドを実行して、どのような結果となるのか、直感的に判断することができる。
特徴的なのは、実行コマンドと結果をターミナル画面のような形式で記述するところである。~
これの何が良いのかというと、テストファイルを見れば、どのようなコマンドを実行して、どのような結果となるのか、直感的に判断することができる、という点である。

&label(sample){例1}; ''sample.t''

#geshi(bash){{{
$ cat tests.t
test echo:

  $ echo foo
  foo

test expr:

  $ expr 1 + 1
  10
}}}

実行すると以下のようになる。

#geshi(bash){{{
$ cram tests.t
!
--- tests.t
+++ tests.t.err
@@ -6,4 +6,4 @@
 test expr:

   $ expr 1 + 1
-  10
+  2

# Ran 1 tests, 0 skipped, 1 failed.
}}}

と、上記のとおり、~
&code(){echo foo};の結果がfoo、~
&code(){expr 1 + 1};の結果が10(誤りで正しくは2)~
であることが、テストファイルを見ればすぐに分かる。

* インストール [#ke81640f]

インストールは簡単であり、&code(){pip};または&code(){make};で可能。

#geshi{{{
pip install cram
}}}

or

#geshi{{{
git clone https://github.com/brodie/cram.git
cd cram
make
}}}

* テスト [#e3330d7e]

** テストプログラム [#w49e740a]

- テストファイルは、拡張子&code(){.t};で作成する。~
ファイル指定であれば、&code(){.t};でなくともよいが、ディレクトリ指定で複数のテストプログラムを実行する場合は、&code(){.t};であることを期待しているので、&code(){.t};が良い。
- スぺース2つ以上で、$(ドルサイン)で始まる行がコマンドとして解釈される。
- 複数行のコマンドの場合は、シェルのように&code(){  > };で続きのコマンドを記述する。
#geshi{{{
# Comment

You can write anything here.
For example, the description of the test and so on:

  $ echo "foo" \
  > "bar"
  foo bar

}}}
- 期待結果がある場合は、同様にインデントしてコマンド行の続きに記述する。

その他の記述はコメントとして解釈されるので、テストに関する説明を自由に記述できる。~
インデントでfocusされた箇所が、ターミナルの画面をそのまま投影したような感じであることが分かるだろう。
** テストの実行結果 [#qfb86c81]

テストの実行結果について、柔軟なAssertが可能なように、cram独自のシンタックスが用意されている。
* 参考リンク [#g7ace6eb]

- https://github.com/brodie/cram
- https://pypi.org/project/cram/


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
目次
ダブルクリックで閉じるTOP | 閉じる
GO TO TOP