🙆
pytest メモ
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