- January 12, 2011
- Not specified
- testing performance optimization assertNumQueries fuzzy
- 1 (after 1 ratings)
Django 1.3 has an assertNumQueries method which will allows you to simply specify the number of queries you expect. Sometimes, however, specifying the exact number of queries is overkill, and makes the test too brittle. This code provides a way to make more forgiving tests.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
# Django 1.3 adds 'assertNumQueries'. Here is how to do fuzzy testing # with this function, using a clever subclass of int. class FuzzyInt(int): def __new__(cls, lowest, highest): obj = super(FuzzyInt, cls).__new__(cls, highest) obj.lowest = lowest obj.highest = highest return obj def __eq__(self, other): return other >= self.lowest and other <= self.highest def __repr__(self): return "[%d..%d]" % (self.lowest, self.highest) class MyFuncTests(TestCase): def test_1(self): # This will fail if the number of queries is outside the range 5 to 8 inclusive with self.assertNumQueries(FuzzyInt(5,8)): my_func(some_args)