Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Assert an integer is within range

I am writing some unittests in python that are testing if I receive an integer. However sometimes this integer can be off by 1 or 2 and I don't really care. Essentially I want to be able to assert that the received integer is within a certain range, something like:

self.assertBetween(998, 1000, my_integer) 

Is there an accepted way of doing this? Or will I have to do something like this:

self.assertTrue(998 <= my_integer) self.assertTrue(my_integer <= 1000) 

EDIT The answers so far suggest:

self.assertTrue(998 <= my_integer <= 1000) 

Is there any benefit of this over my example with 2 asserts?

like image 877
Yep_It's_Me Avatar asked Oct 24 '14 00:10

Yep_It's_Me


Video Answer


2 Answers

You can use a "chained comparison":

self.assertTrue(998 <= my_integer <= 1000) 
like image 128
John Zwinck Avatar answered Oct 04 '22 21:10

John Zwinck


Python has a built in function you may use for this: assertAlmostEqual.

self.assertAlmostEqual(myinteger, 999, delta=1) # is equivalent to self.assertTrue(998 <= myinteger <= 1000) # ... but gives better error messages. 

The optional parameter delta specifies the allowed distance from the value you're testing.

like image 35
Teodor Avatar answered Oct 04 '22 20:10

Teodor