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

Test Driven Development in Python

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →
Avatar for atmb4u atmb4u
April 25, 2012

Test Driven Development in Python

Avatar for atmb4u

atmb4u

April 25, 2012

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