canonical-django team mailing list archive
-
canonical-django team
-
Mailing list archive
-
Message #00027
Re: Django testing best practices
Hi Deryck,
On Mon, Jun 14, 2010 at 1:44 PM, Deryck Hodge
<deryck.hodge@xxxxxxxxxxxxx> wrote:
> On Sun, Jun 13, 2010 at 2:01 PM, James Westby
> <james.westby@xxxxxxxxxxxxx> wrote:
>>
>> We weren't sure about appropriate tests for the basics of models, such
>> as creating an object and checking that it has an attribute that was
>> defined via a field. This is hampered as in my testing some things about
>> the field, such as limits on the length of a string don't seem to be
>> enforced in a test environment (with the sqlite3 backend).
>
> I don't usually test things that are covered by the Django test suite.
> So I wouldn't test model validation again, since Django itself has
> tests for this. Others don't like to trust the framework this way, so
> it's a personal choice. Were it me, I would just test the behavior of
> the model that is unique to my application.
I try to avoid testing framework code, too. That said, I do think
it's worth testing that your model uses the framework as you expect.
For example, if I have a class like:
class Person(object):
name = String()
password = Password(min_length=5)
then a test like:
def test_minimum_password_length(self):
"""A person's password must contain at least 5 characters."""
person = create_person("username", "password")
person.set_password("12345")
self.assertRaises(LengthError, person.set_password, "1234")
is testing application logic, even though the logic to ensure the
constraint is not violated may bubble up from the framework.
Thanks,
J.
Follow ups
References