Qapitol QA is a full service Quality Assurance & Testing Company. We are working on complex quality engineering & test automation challenges. Over the years, we gained expertise in providing innovative solutions to our clients using manual tools and automated test frameworks.
In the world of Agile Development long back we have started walking on the path of Agile Testing. Whenever we hit obstacles, we have enhanced our testing strategies and skills to fulfill client requirements. As part of this journey, we explored Python for Software Testing and we are thrilled with our findings.
Fast, Cheap and Good that’s what we want and Nothing is Impossible that we already know. But since good things take time and Python is no exception to this.
It took 30 years for Guido to convince the world that Fast, Cheap & Good all three are possible with Python. And, that’s the reason companies like Google, Dropbox, and Reddit are using Python1.
Still not convinced. Take a look at Google trends.
Google Trends2
Python stands as the 3rd most loved3 and best programming4 language in the world according to Stack Overflow Developer Survey 2020 and TIOBE Index for July 2020 respectively. And to understand its grace and elegance read Zen of Python5
Beautiful is better than ugly.
Explicit is better than implicit.
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one—and preferably only one—obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea—let's do more of those!
Let’s get started
In 1999, Van Rossum submitted a funding proposal to DARPA called “Computer Programming for Everybody”6, in which he has defined his goals for Python:
- An easy and intuitive language just as powerful as major competitors
- Open source, so anyone can contribute to its development
- Code that is as understandable as plain English
- Suitability for everyday tasks, allowing for short development times
The language has evolved over the years and influenced people all around the world. Since 1999 to till date, we have seen multiple versions of Python. Let’s skip those details and hit that Fast Forward button. The current stable release is 3.8.* which includes following features.
Features of Python
“Python is an experiment in how much freedom programmers need. Too much freedom and nobody can read another’s code; too little and expressiveness is endangered.”
Guido van Rossum, 13 Aug 1996
Easy to Learn
It’s easy to read & write Python programs because of its simple syntax similar to the English language and indentations. Also, it allows you to write programs in fewer lines of code than most of the programming languages.
Open-Source
Python is an example of a FLOSS (Free/Libré and Open Source Software). Anyone can use it for free. Even for commercial use. Just download the source code, make changes, and distribute it.
Portable
It follows the Write Once Run Anywhere (WORA) principle. If you are dealing with multiple operating systems then Python is the right choice for you. Just move Python programs from one platform to another, and run it without any changes.
Object-Oriented
Python supports Object-Oriented Programming. Programs can be divided into modules that makes it less complex and hence new data objects can be created easily from existing objects by reusing them throughout the program.
Interpreted
Python is an interpreted language. The source code is executed line by line. Because of this, it is easier to debug the code. Although interpreters usually take more time than compilers to analyze the source code, but that does not matter compared to the benefits it has to offer.
Embeddable7
Enrich your C/C++ application by embedding Python in it. Embedding provides your application with the ability to implement some of the functionality of your application in Python rather than C or C++.
Extensible8
Python is easily extensible with C, C++, and Java code. To support extensions, the Python API (Application Programmers Interface) defines a set of functions, macros, and variables that provide access to most aspects of the Python run-time system. The Python API is incorporated in a C source file by including the header “Python.h”.
Support for all Databases
Python provides interfaces to all major commercial databases9.
Automatic Memory Management10
Python implements the reference counting technique internally. Every object contains a counter, which is incremented when a reference to the object is stored somewhere, and which is decremented when a reference to it is deleted. When the counter reaches zero, the last reference to the object has been deleted and the object is freed.
Dynamically Typed
Python is dynamically-typed. This means that the type for a value is decided at runtime, not in advance. This is why we don’t need to specify the type of data while declaring it.
Above program will generate the following results:
Batteries Included Philosophy
The python source distribution includes a rich and versatile Standard Library which is immediately available, without making the user download separate packages. This is called Batteries Included Philosophy11 which gives the Python language a head start in many projects.
Support for GUI Development
Python provides various libraries for developing graphical user interfaces (GUIs). The most important libraries are listed below
Tkinter The tkinter package (“Tk interface”) is the standard Python interface to the Tk GUI toolkit. Both Tk and tkinter are available on most Unix platforms, as well as on Windows systems.
Jython Jython is a Java implementation of Python that combines expressive power with clarity. Jython is freely available for both commercial and non-commercial use
wxPython With wxPython software developers can create truly native user interfaces for their Python applications, that run with little or no modifications on Windows, Macs and Linux or other unix-like systems.
Custom Distributions
Python(x,y) Python(x,y) is a free scientific and engineering development software for numerical computations, data analysis and data Visualization
Sage Sage is a free open-source mathematics software system licensed under the GPL. It combines the power of many existing open-source packages into a common Python-based interface.
Community Support
The popularity of Python is growing rapidly. Python’s community is vast, diverse & aims to grow. Great software is supported by great people, and Python is no exception
Subscribe to the following communities to stay updated
Python Weekly Python Weekly is a free weekly email newsletter featuring curated news, articles, new releases, jobs, and more.
PySlackers PySlackers is a community of Python enthusiasts centered around an open Slack team.
Python Discord Python Discord is a large community focused around the Python programming language.
Get started and Deep Dive into Python. Stay connected with us to get started with Automation Testing using Python.
Our next article “Python Automation Testing Frameworks: A-Z” will be published soon.
If you are thinking about outsourcing your QA Testing, write to [email protected]
Resources
- https://wiki.python.org/moin/OrganizationsUsingPython
- https://trends.google.com/trends
- https://insights.stackoverflow.com/survey/2020#technology-most-loved-dreaded-and-wanted-languages-loved
- https://www.tiobe.com/tiobe-index/
- https://en.wikipedia.org/wiki/Zen_of_Python
- https://en.wikipedia.org/wiki/Guido_van_Rossum
- https://docs.python.org/3/extending/embedding.html
- https://docs.python.org/3/extending/extending.html
- https://wiki.python.org/moin/DatabaseInterfaces#:~:text=The%20Python%20standard%20for%20database,can%20be%20used%20from%20Jython.
- https://docs.python.org/2.0/ext/refcounts.html
- https://www.python.org/dev/peps/pep-0206/#:~:text=party%20extension%20modules.-,Batteries%20Included%20Philosophy,head%20start%20in%20many%20projects.