読者です 読者をやめる 読者になる 読者になる

Python + pytestにて、pytest.raisesを使って例外をアサーションする時の注意点

Python + pytestにて、「pytest.raisesを使って例外をアサーションする」テストコードを作成する機会がありました。 ただ、書き方を誤りうまくアサーションできなかっため、メモを残します。 目次 環境 状況 原因 対応 ソースコード 環境 Python 3.6.0 unitt…

Python + pytestで、monkeypatch.setattr()を使ってみた

pytestでは、monkeypatchを使ってmockを作成できます。 Monkeypatching/mocking modules and environments — pytest documentation モンキーパッチ/モックのモジュールと環境 今回は、monkeypatch.setattr()を使って、 プロダクションコードのメソッドや関…

Python + pytestで、プレフィクスがアンダースコア2つの関数(プライベート関数)をテストする

pytestにて、プライベート関数のテストで悩んだことがあったため、メモを残します。 なお、今回のテスト対象コードは以下とします。 target.py def __double_underscore_function(): return 'double' 目次 環境 プライベート関数のimportについて 通常のコー…

Pythonのテストコードで、モジュールをモックに差し替える

Pythonにて、開発環境に無いモジュールをimportしているプロダクションコードに対して、テストコードを書く機会がありました。 ただ、テストコードにてモジュールをモックに差し替える方法で悩んだため、メモを残します。 目次 環境 対応 ソースコード 環境 …

Django + pytestで、setupやteardown、fixtureのscopeなどの実行タイミングを調べてみた

Django + pytestでテストの初期化や後始末を書く場合、 django.test.TestCaseを使った、setUp()やtearDown() pytestを使った、classic xUnitスタイルのsetup_xxx()やteardown_xxx() pytestを使った、@fixtureのscope などのテストフィクスチャが使えます。 …

Django + factory_boyで、1対多や多対多のリレーションを持つテストデータを作る

DjangoでModelまわりのテストデータを用意するには何を使うのが良いのかを調べてみたところ、factory_boyを使うのが良さそうでした。Djangoの他、Mogo・MongoEngine・SQLAlchemyなどのORMにも対応しているのも良いです。 rbarrois/factory_boy: A test fixtu…

Djangoアプリについて、pytest-djangoを使ってテストしてみた

Djangoのテストについて考えていたところ、以下の記事に出会いました。 Djangoのテストの書き方について勉強したのでまとめる - c-bata web Django Best Practice への道 #2 後者の記事にもある通り、py.testではテストの失敗内容を細かく出せそうでした。 …