Book Image

Test-Driven Python Development

By : Siddharta Govindaraj
Book Image

Test-Driven Python Development

By: Siddharta Govindaraj

Overview of this book

This book starts with a look at the test-driven development process, and how it is different from the traditional way of writing code. All the concepts are presented in the context of a real application that is developed in a step-by-step manner over the course of the book. While exploring the common types of smelly code, we will go back into our example project and clean up the smells that we find. Additionally, we will use mocking to implement the parts of our example project that depend on other systems. Towards the end of the book, we'll take a look at the most common patterns and anti-patterns associated with test-driven development, including integration of test results into the development process.
Table of Contents (20 chapters)
Test-Driven Python Development
Credits
About the Author
Acknowledgments
About the Reviewers
www.PacktPub.com
Preface
Index

TDD tools


We looked at the nose2 test runner earlier in this book. Python has other popular third-party test runners. Python also has a number of libraries to make assertions more flexible and readable. These libraries can be used with both unittest compatible tests and the function style tests supported by third-party test runners. Let us take a look at some of these TDD tools.

py.test

Like nose2, py.test is another popular third-party test runner. py.test supports many features like the following:

  • Writing tests as ordinary functions.

  • Using Python's assert statement to perform asserts.

  • Ability to skip tests or mark tests as expected failures.

  • Fixtures with setup and teardown support.

  • Extensible plugin framework, with plugins available to do popular functionality such as XML output, coverage reporting, and running tests in parallel across multiple processors or cores.

  • Tag tests with attributes.

  • Integration with popular tools.

One of py.test's most unique features is funcargs. Take a look at the following...