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
15 changes: 12 additions & 3 deletions FizzBuzz.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,27 @@
"""
"""
Q1. Why is the report method untestable ? [2 pts]


It has external dependecies.
1. File operations
2. take file name as argument


Q2. How will you change the api of the report method to make it more testable ? [2 pts]

Give the file handler to report method.





"""

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

report_file = open('c:/temp/fizzbuzz_report.txt', 'w')
#report_file = open('c:/temp/fizzbuzz_report.txt', 'w')

for number in numbers:
msg = str(number) + " "
Expand Down
16 changes: 15 additions & 1 deletion TestFizzBuzzMocked.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,21 @@ def tearDown(self):
self.fb = None

def test_report(self):
pass

mock_opener = self.mock()
mock_report_file = self.mock()
self.expectAndReturn(mock_opener.open('c:\temp\Joe.txt', 'w'), mock_report_file)

mock_report_file.write("33 fizz")
mock_report_file.close()
#replay
self.replay()

fb = FizzBuzz.FizzBuzz()
fb.report([33], 'c:\temp\Joe.txt', mock_report_file)

#verify
self.verify()



Expand Down
29 changes: 25 additions & 4 deletions TestFizzBuzzStubbed.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,39 @@




Ans:_
setUpClass FizzBuzzStubbed
setup
test_report
teardown
.setup
test_report
teardown
.tearDownClass





Q4. Implement MyStub class so that you can send it as a fake object to the
report method of FizzBuzz object from a test case. [3 pts]
report method of FizzBuzz object from a test case. [3 pts]

"""
class MyStub(object):
pass
def __init__(self):
self.openflag=False
self.values=[] # create empty list

def open(self):
self.openflag = True #"open fake file"

def write(self,msg):
self.values.append(msg) # append values to list

def close():
self.openflag = False # close fake "file"





Expand Down Expand Up @@ -56,4 +77,4 @@ def test_report_for_empty_list(self):
pass

if __name__ == "__main__":
unittest.main()
unittest.main()