OK, maybe crazy overkill and a little silly, but why not? Here's a Python FizzBuzz Acceptance Test: import unittest from fizzbuzzmodule import fizzbuzz class FizzBuzzAcceptanceTestCase(unittest.TestCase): ''' Test that fizzbuzz(int) returns int unless multiple of 3 (then returns 'fizz') multiple of 5 (then returns 'buzz') multiple of both (then returns 'fizzbuzz') ''' def test_business_as_usual(self): ''' test that an integer >= 0 not evenly divisible by three or five returns the same ''' self.assertEqual(fizzbuzz(1), 1) self.assertEqual(fizzbuzz(2), 2) self.assertEqual(fizzbuzz(4), 4) self.assertEqual(fizzbuzz(7), 7) self.assertEqual(fizzbuzz(998), 998) def test_fizz(self): '''evenly divisible by 3 returns fizz''' self.assertEqual(fizzbuzz(3), 'fizz') self.assertEqual(fizzbuzz(6), 'fizz') self.assertEqual(fizzbuzz(111), 'fizz') self.assertEqual(fizzbuzz(999), 'fizz') def test_buzz(self): '''evenly divisible by 5 returns buzz''' self.assertEqual(fizzbuzz(5), 'buzz') self.assertEqual(fizzbuzz(10), 'buzz') self.assertEqual(fizzbuzz(20), 'buzz') self.assertEqual(fizzbuzz(500), 'buzz') def test_fizz_buzz(self): '''evenly divisible by 3 and 5 returns fizzbuzz''' self.assertEqual(fizzbuzz(15), 'fizzbuzz') self.assertEqual(fizzbuzz(30), 'fizzbuzz') self.assertEqual(fizzbuzz(45), 'fizzbuzz') self.assertEqual(fizzbuzz(600), 'fizzbuzz') # def test_zero(self): # self.assertEqual(fizzbuzz(0), 'fizzbuzz') #?????? def main(): unittest.main() if __name__ == '__main__': main() And my question is, how would you augment the above? Would you find it useful to run this test on someone's code? Does it clearly define a clean API? Would it be preferable to return a consistent type instead of strings or ints?