Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 23 additions & 6 deletions FizzBuzz.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""
Q1. Why is the report method untestable ? [2 pts]

report_file open and path is external collaborative (platform and system environment dependent) which is handled in the function so it is untestable.



Expand All @@ -10,10 +11,9 @@

"""
class FizzBuzz(object):
def report(self, numbers):

report_file = open('c:/temp/fizzbuzz_report.txt', 'w')
def report(self, numbers, fileWrapper):

fileWrapper.open()
for number in numbers:
msg = str(number) + " "
fizzbuzz_found = False
Expand All @@ -25,12 +25,29 @@ def report(self, numbers):
fizzbuzz_found = True

if fizzbuzz_found:
report_file.write(msg + "\n")
fileWrapper.write(msg + "\n")

report_file.close()
fileWrapper.close()

if "__main__" == __name__:
fb = FizzBuzz()
fb.report(range(100))
fileWrapper = FileWrapper('temp.txt', 'w') # can create open wrapper
fb.report(range(100), fileWrapper)

class FileWrapper:
def __init__(self, fname, mode):
self.filename = fname
self.mode = mode

def open(self):
self.filehandle = open (self.filename, self.mode)
return self.filehandle

def write(self, buff):
self.filehandle.write(msg)\

def close(self)
self.filehandle.close()



13 changes: 12 additions & 1 deletion TestFizzBuzzMocked.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,18 @@ def tearDown(self):
self.fb = None

def test_report(self):
pass
#create mock
mockFileProvider = self.mock()
mockFileWrapper = self.mockFileProvider('report.txt', 'w')
#replay
self.replay()
#Call the report method with mocked filewrapper
numbers=range(100)
FizzBuzz.report(self.numbers,self.mockFileWrapper)
#verify
self.verify()





Expand Down
28 changes: 20 additions & 8 deletions TestFizzBuzzStubbed.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,14 @@
Q3. What will be printed when we execute 'python FizzBuzzStubbed.py' ? [3 pts]



setUpClass FizzBuzzStubbed
setup
test_report
teardown
setup
test_report
teardown
tearDownClass



Expand All @@ -17,16 +24,21 @@

"""
class MyStub(object):
pass





def __init__(self, values)
self.flag = False
self.values = []

def open(self)
self.flag = True

def write(self,msg)
self.values.append(msg)

def close(self)
self.flag = False




class TestFizzBuzzStubbed(unittest.TestCase):

@classmethod
Expand Down