Skip to content

Instantly share code, notes, and snippets.

@kowito
Last active January 1, 2016 04:58
Show Gist options
  • Save kowito/8094921 to your computer and use it in GitHub Desktop.
Save kowito/8094921 to your computer and use it in GitHub Desktop.
fizz buzz test no if+unittest test by ./fizzbuzz.py test run ./fizzbuzz.py
#!/usr/bin/env python
import unittest
import sys
class FizzBuzz:
def fizz(self, i):
try:
0 / (i % 3)
return self.buzz(i)
except ZeroDivisionError:
try:
return "fizz " + self.buzz(i)
except TypeError:
return "fizz"
def buzz(self, i):
try:
0 / (i % 5)
return i
except ZeroDivisionError:
return "buzz"
class FizzBuzzTests(unittest.TestCase):
def setUp(self):
self.fb = FizzBuzz()
def test_number(self):
self.assertEqual(self.fb.fizz(2), 2)
def test_fizz(self):
self.assertEqual(self.fb.fizz(3), 'fizz')
def test_buzz(self):
self.assertEqual(self.fb.fizz(5), 'buzz')
def test_fizz_buzz(self):
self.assertEqual(self.fb.fizz(15), 'fizz buzz')
def test_wrong_type(self):
self.assertRaises(TypeError, self.fb.fizz, 'WTF!!')
def test(self):
self.setUp()
self.test_number()
self.test_fizz()
self.test_buzz()
self.test_fizz_buzz()
self.test_wrong_type()
if __name__ == "__main__":
try:
sys.argv[1]
unittest.main(FizzBuzzTests)
except IndexError:
fb = FizzBuzz()
for i in range(1, 21):
fb_list=[]
for j in range(1,i+1):
fb_list.append(fb.fizz(j))
print '%s. %s = %s' % (i, i, fb_list)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment