Quickly learn how to automate unit testing of Python 3 code with Python 3 automation libraries, such as doctest, unittest, nose, nose2, and pytest. This book explores the important concepts in software testing and their implementation in Python 3 and shows you how to automate, organize, and execute unit tests for this language. This knowledge is often acquired by reading source code, manuals, and posting questions on community forums, which tends to be a slow and painful process. Python Unit Test Automation will allow you to quickly ramp up your understanding of unit test libraries for Python 3 through the practical use of code examples and exercises. All of which makes this book a great resource for software developers and testers who want to get started with unit test automation in Python 3 and compare the differences with Python 2. This short work is your must-have quick start guide to mastering the essential concepts of software testing in Python. What You'll Learn: Essential concepts in software testing Various test automation libraries for Python, such as doctest, unittest, nose, nose2, and pytest Test-driven development and best practices for test automation in Python Code examples and exercises Who This Book Is For: Python developers, software testers, open source enthusiasts, and contributors to the Python community
Author(s): Ashwin Pajankar
Publisher: Apress
Year: 2017
Language: English
Pages: 111
Contents at a Glance
Contents
About the Author
About the Technical Reviewers
Acknowledgments
Introduction
Chapter 1: Introduction to Python
The History of Python
Features of Python
Simple
Easy to Learn
Easy to Read
Easy to Maintain
Open Source
High-Level Language
Portable
Interpreted
Object-Oriented
Extensible
Extensive Libraries
Robust
Rapid Prototyping
Memory Management
Powerful
Community Support
Python 3
The Differences Between Python 2 and Python 3
Why Use Python 3
Installation of Python 3
Installation on Linux
Installation on Debian, Ubuntu, and Derivatives
Installation on Fedora and CentOS
Installation on MacOS X
Installation on Windows
Running a Python Program and Python Modes
Interactive Mode
Normal Mode
IDEs for Python
IDLE
The PyDev Plugin for Eclipse
Geany
PyCharm
Conclusion
Chapter 2: Getting Started
A Brief Introduction to Software Testing Concepts
Unit Testing
Test Automation
The Benefits of Automated Unit Testing
Using Docstrings
Example of a Docstring in Python
A Brief Introduction to doctest
Failing Tests
Separate Test File
Advantages and Disadvantages of doctest
Conclusion
Chapter 3: Unittest
Introduction to xUnit
Using Unittest
Order of Execution of the Test Methods
Verbosity Control
Multiple Test Classes Within the Same Test File/Module
Test Fixtures
Running Without unittest.main()
Controlling the Granularity of Test Execution
Listing All the Command-Line Options and Help
Important Command-Line Options
Creating a Test Package
Organizing the Code
Placing the Development and Test Code in a Single Directory
Placing the Development and Test Code in Separate Directories
Test Discovery
Coding Conventions for unittest
Assertions in unittest
Other Useful Methods
Failing a Test
Exceptions in the Test Case
assertRaises()
Conclusion
Chapter 4: nose and nose2
Introduction to nose
Installing nose on Linux OS
Installing nose on MacOS and Windows
Verifying the Installation
Getting Started with nose
A Simple nose Test Case
Running the Test Module with nosetests
Getting Help
Organizing the test code
Test Discovery
Fixtures for Classes, Modules, and Methods
Fixtures for Functions
Fixtures for Packages
Alternate Names of the nose Fixtures
assert_equals()
Testing Tools
ok_ and eq_
The @raises() Decorator
The @timed() decorator
Report Generation
Creating an XML Report
Creating an HTML Report
Creating Color Output in the Console
Running unittest Tests from nose
Advantages of nose over unittest
Disadvantages of nose
Using Nose 2
Conclusion
Chapter 5: pytest
Introduction to pytest
Simple Test
Running Tests with the py.test Command
Test Class and Test Package in pytest
Test Discovery in pytest
xUnit-Style Fixtures
pytest Support for unittest and nose
Introduction to pytest Fixtures
Scope of pytest Fixtures
pytest.raises()
Important pytest Command-Line Options
Help
Stopping After the First (or N) Failures
Profiling Test Execution Duration
JUnit-Style Logs
Generating a Plain Result
Sending a Test Report to Online pastebin Service
Conclusion
Chapter 6: Tips and Tricks
Coding and Filenaming Conventions for Easier Test Discovery
Test-Driven Development with pytest
Conclusion
Index