テクめも

プログラミング関連のちょっとしたTipsなどを書いています。

Test

pytestで複数の条件を組み合わせたテストする

pytestでは、parametrizeを使うと、条件を変えてテストすることができます。 以下の例では、x=0、x=1とx=2の3パターンがテストされます。 @pytest.mark.parametrize("x", [0, 1, 2]) def test_foo(x): pass ここに、flag=True/Falseも条件に加えたいとします…

pyenv + toxで複数バージョンのテストを行う

pyenvを使用している環境で、toxで複数バージョンのテストをするときはまったのでそのメモです。 tox.iniに以下のように設定しておき、toxでテストを実行しました。 [tox] envlist = py36, py37 [testenv] deps = pytest commands = pytest $ tox GLOB sdist…

Clickのテストで例外をキャッチしない

PythonのCLIフレームワークであるClickでは、テストツールも用意されており、容易にテストを書くことができます。 invokeを使えば、コマンドと引数を渡すことができますが、デフォルトでは例外をキャッチします。 通常は、exit_codeの値を比較すればよいので…

ArgumentParserをテストする

argparse を使うと簡単にCLIが作成できます。 そのままテストすることが少し難しかったので、調べた結果、parseするとことを別の関数に切り出して、その部分をテストするのが良さそうです。 # main.py def main(): args = parse_args(sys.argv[1:]) def pars…

Cucumberではじめるエンドツーエンドのテスト

Cucumberのインストール方法とテスト実行までのメモです。 インストール Gemfile に以下を追記して、インストールします。 gem 'rspec-rails' gem 'cucumber-rails', require: false gem 'database_cleaner' $ bundle install 次に、Cucumberのファイルを生…