Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
Python, Lua, Tcl, C and C++ training - public course schedule [here]
Private courses on your site - see [here]
Please ask about maintenance training for Perl, PHP, Java, Ruby, MySQL and Linux / Tomcat systems
 
Python base and inherited classes, test harness and unit testing - new examples

From a recent Python course ... a new series of examples on writing, testing and using classes. The customer is using Python 2.6 and 2.7, so the code is written with what we call "new style classes" where everything eventually inherits from a base class os object - with that eventual inheritance expected to become implicit when the code is moved to Python 3.

The class definition itself is [here] - a class of "transport" to be the base for various types of transport which are all defined below within the same source file, and it also includes a very simple test harness.

Testing of code is critical, and I used this newly written class during the course as my basis for writing tests and showing off the unittest modules in simple examples - [here] for "Hello testing world" giving very simple results:

  munchkin: grahamellis$ python utdemo
  ...
  ----------------------------------------------------------------------
  Ran 3 tests in 0.000s
  
  OK
  munchkin: grahamellis$


and [here] for a test set which produces a far more verbose output, and also demonstrates how errors are flagged:

  munchkin: grahamellis$ python utd2
  test_001 (__main__.Mytests) ... ok
  test_002 (__main__.Mytests) ... ok
  test_003 (__main__.Mytests) ... ok
  test_004 (__main__.Mytests) ... ok
  test_005 (__main__.Mytests) ... ERROR
  
  ======================================================================
  ERROR: test_005 (__main__.Mytests)
  ----------------------------------------------------------------------
  Traceback (most recent call last):
    File "utd2", line 25, in test_005
      c = self.example.getstandees()
  AttributeError: 'train' object has no attribute 'getstandees'
  
  ----------------------------------------------------------------------
  Ran 5 tests in 0.001s
  
  FAILED (errors=1)
  munchkin: grahamellis$


Following on from our tests, there are further examples - application code snippets that use the transport classes [here] and [here], with that latter example showing how a data file can be loaded into a list of objects through a factory method. Sample data file [here].

What's missing from these examples? Documentation Strings! ... simply because the examples were written dynamically in front of delegates during the course, with time being limited, and with a desire for the whole example to fit onto a single projection screen. The documentation was there, in my verbal comments and descriptions, as the course ran - if you can think of it like that.
(written 2014-12-07)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
Y212 - Python - Code testing, patterns, profiles and optimisation.
  [4716] Profiling your Python program - (2016-11-01)
  [4618] Pytest - second example beyond hello world - (2016-01-08)
  [4617] Pytest - starting example - (2016-01-07)
  [4542] The principle of mocking - and the Python Mock package - (2015-10-17)
  [4540] Unittest of a Flask application including forms - (2015-10-15)
  [4538] Flask and unittest - hello web app test world - (2015-10-15)
  [4470] Testing in Python 3 - unittest, doctest and __name__ == __main__ too. - (2015-04-21)
  [4446] Combining tests into suites, and suites into bigger suites - Python and unittest - (2015-03-01)
  [4326] Learning to program - comments, documentation and test code - (2014-11-22)
  [4090] Test Driven Development in Python - Customer Comes First - (2013-05-16)
  [3658] Using Make for a distribution - (2012-03-17)
  [3478] Testing your Python classes with the unittest package - how to - (2011-10-14)
  [3464] Passing optional and named parameters to python methods - (2011-10-04)
  [3442] A demonstration of how many Python facilities work together - (2011-09-16)
  [3441] Pressing ^C in a Python program. Also Progress Bar. - (2011-09-15)
  [2616] Defining a static method - Java, Python and Ruby - (2010-02-01)
  [2123] Using Python with OpenOffice - (2009-04-09)
  [1555] Advanced Python, Perl, PHP and Tcl training courses / classes - (2008-02-25)
  [1148] Python decorators - wrapping a method call in extra code - (2007-04-15)
  [1146] __new__ v __init__ - python constructor alternatives? - (2007-04-14)
  [1140] Python GTK - Widget, Packing, Event and Feedback example - (2007-04-09)
  [235] Preparation for a day's work - (2005-03-04)

Y112 - Python - Objects - Intermediate
  [4719] Nesting decorators - (2016-11-02)
  [4718] Defining an object that is a modified standard type in Python - (2016-11-02)
  [4717] with in Python - examples of use, and of defining your own context - (2016-11-02)
  [4649] Object and Static methods - what is the difference; example in Python 3 - (2016-02-17)
  [4541] Setting up and tearing down with the Python with keyword - (2015-10-16)
  [4450] Deciding whether to use parameters, conditional statements or subclasses - (2015-03-05)
  [4449] Spike solution, refactoring into encapsulated object methods - good design practise - (2015-03-05)
  [4410] A good example of recursion - a real use in Python - (2015-02-01)
  [4366] Changing what operators do on objects - a comparison across different programming languages - (2014-12-26)
  [4356] Object factories in C++, Python, PHP and Perl - (2014-12-19)
  [4094] Python Properties - how and why - (2013-05-18)
  [4028] Really Simple Class and Inheritance example in Python - (2013-03-04)
  [3887] Inheritance, Composition and Associated objects - when to use which - Python example - (2012-10-10)
  [3796] Backquote, backtic, str and repr in Python - conversion object to string - (2012-07-05)
  [3524] Metaclasses (Python) and Metatables (Lua) - (2011-11-17)
  [3472] Static variables in functions - and better ways using objects - (2011-10-10)
  [3002] A list of special method and attribute names in Python - (2010-10-17)
  [2994] Python - some common questions answered in code examples - (2010-10-10)
  [2905] Defining static methods in Python - (2010-08-05)
  [2889] Should Python classes each be in their own file? - (2010-07-27)
  [2785] The Light bulb moment when people see how Object Orientation works in real use - (2010-05-28)
  [2764] Python decorators - your own, staticmethod and classmethod - (2010-05-14)
  [2722] Mixins example in Python - (2010-04-14)
  [2720] Multiple inheritance in Python - complete working example - (2010-04-14)
  [2717] The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11)
  [2693] Methods that run on classes (static methods) in Python - (2010-03-25)
  [2485] How do I set up a constant in Python? - (2009-10-31)
  [2409] TypeError: super() argument 1 must be type, not classobj (Python) - (2009-09-18)
  [2368] Python - fresh examples of all the fundamentals - (2009-08-20)
  [1819] Calling base class constructors - (2008-10-03)
  [1661] Equality, sameness and identity - Python - (2008-05-31)
  [1644] Using a utility method to construct objects of different types - Python - (2008-05-17)
  [1517] Python - formatting objects - (2008-01-24)
  [1217] What are factory and singleton classes? - (2007-06-04)
  [964] Practical polymorphism in action - (2006-12-04)
  [903] Pieces of Python - (2006-10-23)
  [831] Comparison of Object Oriented Philosophy - Python, Java, C++, Perl - (2006-08-13)
  [656] Think about your design even if you don't use full UML - (2006-03-24)
  [477] Class, static and unbound variables - (2005-10-25)
  [383] Overloading of operators on standard objects in Python - (2005-07-19)
  [296] Using a Python dictionary as a holder of object attributes - (2005-04-30)


Back to
Politics and the railway the connects Wiltshire
Previous and next
or
Horse's mouth home
Forward to
Incrementing a variable in Java - Pre and Post Increment
Some other Articles
Taking my life in my hands in Swansea
Arrays in Java - an introduction for newcomers
A behaviour driven example of writing a Java program
Incrementing a variable in Java - Pre and Post Increment
Python base and inherited classes, test harness and unit testing - new examples
Politics and the railway the connects Wiltshire
My first official measure - Passenger Entrys and Exits - revisited 9 years later
Segmentation Fault, Segmentation Violation, Bus Error, Stack Smashing
Command line and file handling in C
Simple C structs - building up to full, dynamic example
4755 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2017: 404 The Spa • Melksham, Wiltshire • United Kingdom • SN12 6QL
PH: 01144 1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/4344_Pyt ... mples.html • PAGE BUILT: Sat May 27 16:49:10 2017 • BUILD SYSTEM: WomanWithCat