Book Image

Python Testing: Beginner's Guide

By :
Book Image

Python Testing: Beginner's Guide

By:

Overview of this book

<p>Automated testing moves much of the labor of testing off the developer and makes it easier as well as quicker to find bugs and fix them. Automated tests run faster, increase test coverage, and lower costs. However, testing is neither an easy process nor remotely exciting for most developers. But with the right techniques and tools, testing can become a simple and gratifying part of the development process.<br /><br />With this helpful guide – from an expert – in your hand, testing will not be a tiresome topic for you anymore. You will learn how to test your Python projects in the easiest way, making other parts of the development process easier and more enjoyable. <br /><br />This book covers the tools and techniques of automated testing and test-driven development. Starting from the very basics, the chapters introduce new tools and techniques in simple, accessible language with step-by-step examples. You will explore how to make testing easier and more accurate with Python's doctest module and learn test-driven development using the unittest framework. You will also learn how to keep your units separate from each other and discover a simple and easy way to integrate Mocker and unittest. Next, we cover integration testing and web application testing.<br /><br />Automated testing gives developers better feedback, faster and more often. Bugs get found sooner and fixed better, with less effort. By the end of this book, you will have all of the skills needed to benefit from automated testing.</p>
Table of Contents (17 chapters)
Python Testing
Credits
About the Author
About the Reviewers
Preface
Index

Time for action – unit testing during development


  1. The first step is to run the tests. Of course, we have a pretty good idea of what's going to happen; they're all going to fail. Still, it's useful to know exactly what the failures are, because those are the things that we need to address by writing code.

    There are many more failing tests after that, but you get the idea.

  2. Taking our cue from the tests, and our references on PID controllers, we write the pid.py module:

    from time import time
    
    class PID:
        def __init__(self, P, I, D, setpoint):
            self.gains = (float(P), float(I), float(D))
            self.setpoint = [float(setpoint)]
            self.previous_time = None
            self.previous_error = 0.0
            self.integrated_error = 0.0
    
        def push_setpoint(self, target):
            self.setpoint.append(float(target))
    
    
        def pop_setpoint(self):
            if len(self.setpoint) > 1:
                return self.setpoint.pop()
            raise ValueError('PID controller must have a setpoint')
    
       ...