正如大多数Django教程所建议的那样,我通过AbstractUser创建了自己的用户模型,并创建了一个Profile-model,其中包含更多的细节,比如通过OneToOneField链接到User的bio。
现在我开始编写测试,我不知道如何从里面引用Profile模型。
test_models.py
import pytest
from mixer.backend.django import mixer
pytestmark = pytest.mark.django_db
class TestUsers:
def test_user(self):
obj = mixer.blend('player.User')
assert obj.pk == 1, 'Should save one instance of a user'
assert obj.Profile.bio is not None, 'There should be at least default bio'给我一个“属性错误”:“用户”对象没有属性“配置文件”
models.py
class User(AbstractUser):
pass
class Profile(models.Model):
user = models.OneToOneField(get_user_model(), on_delete=models.CASCADE)
bio = models.CharField(max_length=130, default='No bio written yet.')
@receiver(post_save, sender=get_user_model())
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=get_user_model())
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()如何引用应该通过models.py中的信号创建的配置文件进行测试?
发布于 2020-02-05 12:51:12
我找到了办法。我的新test_models.py文件是这样的:
import pytest
from mixer.backend.django import mixer
from player.models import Profile
pytestmark = pytest.mark.django_db
class TestUsers:
def test_user(self):
obj = mixer.blend('player.User')
prof = Profile.objects.get(user_id=1)
prof.bio = 'Testbio'
prof.save()
prof = Profile.objects.get(user_id=1)
assert obj.pk == 1, 'Should save one instance of a user'
assert prof.bio == 'Testbio'我创建了一个用户,我从数据库中获取他的个人资料,我修改了bio并将其保存回数据库。我从数据库中获取修改后的版本,并检查修改后的bio是否在其中。
如果有一种更优雅的方式来做这件事,我很乐意读到。
https://stackoverflow.com/questions/60075966
复制相似问题