🙆

pytest メモ

2023/08/26に公開

pytestで出力の1行目を改行する

printデバッグをしているとき、pytestの一行目の開始点が揃わないのでよく惑わされています。

pytest -s --no-header test_rollback.py

通常

stdoutはテスト関数名の直後から始まります。

pytest_runtest_setupフックを使う

root_of_test/conftest.pyにこのように書くと最初に改行してくれる。

@pytest.fixture(autouse=True, scope='session')
def setup_print():
    print("\n")

最初こちらを使っていたが、テストごとに改行してしまうので止めました。

def pytest_runtest_setup(item):
    print("\n")

特定のファイルを除外するとき

以下をpytestから除外したい。
/unit/test_xxx.py
/unit/test_yyy.py
/unit/test_zzz.py

python -m pytest tests/unit --ignore=tests/unit/test_xxx.py --ignore=tests/unit/test_yyy.py --ignore=tests/unit/test_zzz.py 

こうも書けるが、ファイル名なのか関数名なのかが判別できないので注意

python -m pytest tests/unit -k "not test_xxx and not test_yyy and not test_zzz" 

特定の関数を除外するとき

指定できるのは関数名だけで、「特定のファイルの特定の関数」、という指定はできない。下記では複数ファイルに存在する場合も全てのtest_func2とtest_func3が除外される。

python -m pytest tests/unit -k "not test_func2 and not test_func3"

Discussion