Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Test Driven Development in Python

Avatar for atmb4u atmb4u
April 25, 2012

Test Driven Development in Python

Avatar for atmb4u

atmb4u

April 25, 2012
Tweet

More Decks by atmb4u

Other Decks in Programming

Transcript

  1. Overview • About TDD • TDD and Python • unittests

    • Developing with Tests • Concluding Remarks • Open Discussion
  2. “ Walking on water and developing software from a specification

    are easy if both are frozen. - Edward V Berard ”
  3. 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 !
  4. 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
  5. 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()
  6. 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
  7. Test Again 1. Add new test for features/bugs 2. Resolve

    the issue, make the test succeed. 3. Iterate from Step 1