Dear Django dev community, More and more of the python ecosystem is implementing property-based testing to find difficult and counter-intuitive edge cases using the library hypothesis: https://github.com/HypothesisWorks/hypothesis/tree/master/hypothesis-python
For example testing using hypothesis has found bugs in the python language itself, apparently JSON and regex implementation is even more interesting than it seems it should be. Zac Hatfield-Dodds (https://github.com/Zac-HD) has been invited to talk about hypothesis at the language summit at PyCon this year and is again running a workshop about the library. The context of this email is that I've been working with Zac to try to make sense of Hypothesis in a Django user context. The current documentation for this is here if anyone is curious: https://hypothesis.readthedocs.io/en/latest/django.html ... honestly I think it's pretty opaque for a normal Django dev, though is very powerful and would replace nearly all the tests me and my friends have ever written, and moreover do a better job of it. As the conversation continued about how testing works in a django instance (turns out we use odd patterns and it's not how they thought it works) it became a giant question mark about if/how hypothesis testing would be implemented in the django framework itself. To briefly digress: he suggested I write an example for testing a straight model and I was baffled. This isn't something I've thought about for a long time but I did think about it once, my (potentially incorrect) belief is: .. if I just made a vanilla django model with vanilla fields with no methods (no anything else whatsoever, say no views nor functions nor anything at all) it would be redundant for me to write any tests. They wouldn't do anything -- there'd effectively be nothing to test. It would all have been brutally validated at the framework/database level. What I asserted to Zac is that I consider this the responsibility of the framework -- I mean if django field validation/saving is failing tests at the ORM level on an oracle db in a certain environment or something, that might be a case a test written for model would pick up, but I would never think this was a user concern. Sure if I do something exotic I'll write my own tests, but I ... profoundly trust the ORM to validate vanilla model fields. Maybe this is old thinking or I'm misguided, I'd be fascinated to hear what others think and to follow this thread to the end, but this is a digression. Suffice to say this does seem to point to somewhere that property-based testing would be appropriate at the framework level, not only at the user level. I'm writing because perhaps we could talk about django using "complex" testing like this, as there are areas for which it might be appropriate to improve the robustness of the framework. It's particularly useful for improving robustness on encoding edge-cases, which are a perenniel problem we care about. For example where data is being passed around it could perhaps be using "fuzzy" strategy, for example here (I think, though could be wrong): https://github.com/django/django/blob/master/django/test/client.py I was going to make a ticket, but then thought to just email the list to have a chat instead. All the very best to everyone and warm hellos to friends old and new, --- Elena Williams Github: elena <http://github.com/elena/> -- You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-developers+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/CAMRRKVeiNJEzst6pQbsMKhodGdBZ%2BHmSFr4F0fukigGWFd33jA%40mail.gmail.com.