Hi,
On Sunday 28 November 2010, Christophe Pettus wrote:
>
> I'm updating the patch for #12180 to work with the dev version of 1.3, and
> preparing a test case for it. Being new to the Django test suite, it's
> not clear to me how to introduce a backend-specific and
> settings-file-specific test (the test case requires PostgreSQL 8.2+ and
> AUTOCOMMIT: True in the database options). Is there some quick guidance
> from those more experienced than me?
>
I'm not all that experienced, but my impression is that the Django test suite
makes selective testing based not on the identity of the backend, but rather
its features. This is expressed with decorators such as
django.test.skipIfDBFeature/skipUnlessDBFearure. These are special cases of
the more general unittest.skipIf and unittest.skipUnless.
However, looking at the bug, it seems like you require not only a backend-
specific test, but something more complex: You need a "fresh" connection. So
what I think you should do, is:
- skipUnlessDBFeature('can_return_id_from_insert')
- in the test setup, manipulate settings.DATABASES to insert a new dictionary
using the same details as 'default', and making sure AUTOCOMMIT is on
- make your insert query using= this new connection, so it is created for it.
One other point: There is a database feature named "uses_autocommit" --
currently it is false (by default) for postgresql_psycopg2, but if I
understand correctly its true value depends on options. If it did reflect the
options, you could have skipUnless'd it. I'm not sure if that would make your
test better (you still need a fresh connection), but it may be worth opening
its own ticket.
HTH,
Shai.
--
You received this message because you are subscribed to the Google Groups
"Django developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-developers?hl=en.