🧑‍✈️

djangoのdbにアクセスするような変数をpytest.mark.parametrizeでパラメータ化することはできない

2022/09/17に公開

これはng

@pytest.mark.django_db
class TestUserViewSet:
    @pytest.mark.parametrize(
        "user",
        [
            UserAFactory(),
            UserBFactory(),
            UserCFactory(),
            UserDFactory(),
        ],
    )
    def test_user_can_do(self, user):
        user.do()

代わりにこれはok
クラスを関数の内部で初期化する

@pytest.mark.django_db
class TestUserViewSet:
    @pytest.mark.parametrize(
        "user_factory_class",
        [
            UserAFactory,
            UserBFactory,
            UserCFactory,
            UserDFactory,
        ],
    )
    def test_user_can_do(self, user_factory_class):
        user = user_factory_class()
	user.do()

Discussion