Closed3

Pytestを正しく使いこなしたい

yukiyuki

Pytest

Python におけるテストフレームワークのデファクトに近い存在。モック機能など他言語のテストフレームワークに入っているものは一通り入っている。

https://docs.pytest.org/en/stable/

yukiyuki

ドキュメントからサンプルをいくつか拝借しつつ概観を眺める。

基本的な assert

下記は Fail するが、こんな書き味になる。

def f():
    return 3


def test_function():
    assert f() == 4

例外のハンドリング

pytest.raises で例外を検知したかどうかまでわかる。中身のメッセージがどうなっているかも match 引数で指定可能みたい?

import pytest


def myfunc():
    raise ValueError("Exception 123 raised")


def test_match():
    with pytest.raises(ValueError, match=r".* 123 .*"):
        myfunc()
yukiyuki

環境変数を読み込めなくてちょっとつまづいた。

dotenv などは使用したくなく、という条件のもといろいろ調べてみた。

結果は、

https://github.com/MobileDynasty/pytest-env

これが最もシンプルでよかった。

pytest.ini にドキュメントのとおりに環境変数の設定を書いていくだけだった。

fixture にいれる方法や、os.environ をモックする方法も次点で見つかったが、入れられるプラグインに制限がないなどであれば、これがおすすめそう。

このスクラップは2020/12/08にクローズされました