如何在Django中正确测试signals.py?

2024-06-01 13:24:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道我的信号测试是否正确?signals.py的“django nose”测试覆盖率仍然为0%

这是我的信号。py

@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)


@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
    instance.profile.save()

这是我的测试。py

class TestSignals(TestCase):
    def test_create_profile_signal_triggered(self):
        handler = MagicMock()
        signals.create_profile.send(handler, sender='test')
        
        form = UserCreationForm()
        form.cleaned_data={'username':'oatty111','email':'oatty@mail.com','password1':'test123',
        'password2':'test123','first_name':'Michael','last_name':'Jordan'}
        form.save()
        signals.create_profile.send(sender='test',form_date=form)

        handler.assert_called_once_with(signal=signals.create_profile, form_data=form, sender='test')

这是我的表格。py

class UserRegisterForm(UserCreationForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['username','email','password1','password2','first_name','last_name']

Tags: instancenamepytestformemailsavedef