2. Overview
● About TDD
● TDD and Python
● unittests
● Developing with Tests
● Concluding Remarks
● Open Discussion
3. “ Walking on water and developing software
from a specification are easy if both are
frozen. ” - Edward V Berard
4. About Test Driven Development
(TDD)
● Write tests for the use case
● Run it (make sure it fails and fails
miserably)
● Write code and implement the required
functionality with relevant level of detail
● Run the test
● Write test for addition features
● Run all test
● Watch it succeed. Have a cup of coffee !
5. Advantages of TDD
● application is determined by using it
● written minimal amount of application code
– total application + tests is probably more
– objects: simpler, stand-alone, minimal
dependencies
● tends to result in extensible architectures
● instant feedback
7. import unittest
from demo import Greater The Test
class DemoTest(unittest.TestCase):
def test_number(self):
comparator = Greater()
result = comparator.greater(10,5)
self.assertTrue(result)
def test_char(self):
comparator = Greater()
result = comparator.greater('abcxyz', 'AB')
self.assertTrue(result)
def test_char_equal(self):
comparator = Greater()
result = comparator.greater('4', 3)
self.assertTrue(result)
if __name__ == '__main__':
unittest.main()
8. class Greater(object):
The Program
def greater(self, val1, val2):
if type(val1) ==str or type(val2) == str:
val1 = str(val1)
val2 = str(val2)
sum1 = sum([ord(i) for i in val1])
sum2 = sum([ord(i) for i in val2])
if sum1 > sum2:
return True
else:
return False
if val1>val2:
return True
else:
return False
9. Test Again
1. Add new test for features/bugs
2. Resolve the issue, make the test succeed.
3. Iterate from Step 1