KEMBAR78
Test Driven Development in Python | PDF
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()
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()
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
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

Test Driven Development in Python

  • 1.
    Test Driven Developmentin Python Anoop Thomas Mathew Agiliq Info Solutions Pvt. Ltd.
  • 2.
    Overview ● About TDD ● TDD and Python ● unittests ● Developing with Tests ● Concluding Remarks ● Open Discussion
  • 3.
    “ Walking onwater and developing software from a specification are easy if both are frozen. ” - Edward V Berard
  • 4.
    About Test DrivenDevelopment (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
  • 6.
    Unittest import unittest class MyTest(unittest.TestCase): def testMethod(self): self.assertEqual(1 + 2, 3, "1 + 2 !=3") if __name__ == '__main__': unittest.main()
  • 7.
    import unittest from demoimport 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. Addnew test for features/bugs 2. Resolve the issue, make the test succeed. 3. Iterate from Step 1
  • 10.
  • 11.