0
我在Django中使用了Pytest,並發現了這種奇怪的行爲。我有兩個用戶裝置,一個是另一個的超集。一切工作如預期,直到我在同一個測試用例中使用兩個燈具。Pytest夾具互相干擾
燈具:
@pytest.fixture
def user_without_password():
return User.objects.create_user(username=fake.name(), email=fake.email())
@pytest.fixture
def user_with_password(user_without_password):
user = user_without_password
user.set_password('topsecret')
user.save()
return user
測試
@pytest.mark.django_db()
def test_without_pass(user_without_password):
assert not user_without_password.has_usable_password()
@pytest.mark.django_db()
def test_with_pass(user_with_password):
assert user_with_password.has_usable_password()
# THIS FAILS!!
@pytest.mark.django_db()
def test_both(user_with_password, user_without_password):
assert not user_without_password.has_usable_password()
assert user_with_password.has_usable_password()
最後一次測試,因爲顯然user_with_password
不工作,user_without_password
最終被同一個對象。有沒有辦法確保每次都是新對象?這種行爲感覺違反直覺。