Open5

Pytest周りのあれこれ

ピン留めされたアイテム
Hideki IkemotoHideki Ikemoto

このスクラップについて

プライベートでDjangoアプリを作っていますが、そこで得たPytest周りのノウハウをまとめるものです。

Hideki IkemotoHideki Ikemoto

@pytest.mark.django_db(transaction=True) を付けているが、 Database access not allowed と出る

おそらく、parametrizeの引数に、DBをアクセスするものがあるためです。

@pytest.mark.parametrize(
    "instance, expected",
    (PurchaseFactory(name="暴君ハバネロ"), "〜〜〜"),
)
def test_it(self, instance, expected):
    ...

ではなく、以下のようにするといいです。

@pytest.mark.paramtrize(
    "params, expected",
    (dict(name="暴君ハバネロ"), "〜〜〜"),
)
def test_it(self, params, expected):
    instance = PurchaseFactory(**params)
    ...
Hideki IkemotoHideki Ikemoto

skipとxfailの違い

  • skipは「Windowsでは動かないテスト」のように、テストする意味がないもの
  • xfailは「バグなどで落ちることが分かっていること」のように、テストする意味があるもの