Test Driven Development in Python

1,562 views 11 slides Apr 17, 2012
Slide 1
Slide 1 of 11
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11

About This Presentation

No description available for this slideshow.


Slide Content

Test Driven Development in Python
Anoop Thomas Mathew
Agiliq Info Solutions Pvt. Ltd.

Overview
●About TDD
●TDD and Python
●unittests
●Developing with Tests
●Concluding Remarks
●Open Discussion


Walking on water and developing software
from a specification are easy if both are
frozen. - Edward V Berard

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 !

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

Unittest
import unittest
class MyTest(unittest.TestCase):
def testMethod(self):
self.assertEqual(1 + 2, 3, "1 + 2 !=3")
if __name__ == '__main__':
unittest.main()

The Test
import unittest
from demo import Greater
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()

The Program
class Greater(object):
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

Test Again
1. Add new test for features/bugs
2. Resolve the issue, make the test succeed.
3. Iterate from Step 1

Beware!!!
Murphy is everywhere.

Let's Discuss