# 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)
Comments
standard unittest already has assertAlmostEqual that seems to perform the same thing with a different approach.
#