Hi Mark,

On zondag 13 mei 2018 18:11:07 CEST Mark Phillips wrote:
> What should be unit tested in models.py? I assume the storing of data and
> retrieving of data from the database does not need to be tested, as I
> further assume django has a full set of tests for those operations.

You should test your business requirements. Even for those operations. Best 
illustrated:

# models.py
class Customer(models.Model):
        email = models.EmailField()
        name = models.CharField(max_length=100)

# tests.py

class CustomerTestCase(TestCase):
        def test_create(self):
                data = { 'email': 'i...@example.com', name='John Doe' }
              first = Customer.objects.create(**data)
                with self.assertRaisesMessage(IntegrityError, 'duplicate key 
value'):
                        second = Customer.objects.create(**data)

This test will fail cause there's no unique constrain on email, which is 
likely to be a business requirement. You should test it. Especially because if 
someone refactor years down the line and accidentally removes the requirement, 
you have a problem.

> * Labels for all fields
> something like
> def test_first_name_label(self):
>         author=Author.objects.get(id=1)
>         field_label = author._meta.get_field('first_name').verbose_name
>         self.assertEquals(field_label,'first name')

I would say this is exactly the thing you wouldn't test: anything dealing with 
_meta. Test these further downstream, by verifying form labels and their 
translated version if it applies. And I'd say the exact wording of a form 
label may not be at all important, so you could skip this.

-- 
Melvyn Sopacua

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/2172791.13n9OJESef%40fritzbook.
For more options, visit https://groups.google.com/d/optout.

Reply via email to