Book Image

pytest Quick Start Guide

By : Bruno Oliveira
Book Image

pytest Quick Start Guide

By: Bruno Oliveira

Overview of this book

Python's standard unittest module is based on the xUnit family of frameworks, which has its origins in Smalltalk and Java, and tends to be verbose to use and not easily extensible.The pytest framework on the other hand is very simple to get started, but powerful enough to cover complex testing integration scenarios, being considered by many the true Pythonic approach to testing in Python. In this book, you will learn how to get started right away and get the most out of pytest in your daily work?ow, exploring powerful mechanisms and plugins to facilitate many common testing tasks. You will also see how to use pytest in existing unittest-based test suites and will learn some tricks to make the jump to a pytest-style test suite quickly and easily.
Table of Contents (9 chapters)

Handling setup/teardown

To fully convert a TestCase subclass to pytest style, we need to replace unittest with pytest's idioms. We have already seen how to do that with self.assert* methods in the previous section, by using unittest2pytest. But what can we do do about setUp and tearDown methods?

As we learned previously, autouse fixtures work just fine in TestCase subclasses, so they are a natural way to replace setUp and tearDown methods. Let's use the example from the previous section.

After converting the assert statements, the first thing to do is to remove the unittest.TestCase subclassing:

class Test(unittest.TestCase):
...

This becomes the following:

class Test:
...

Next, we need to transform the setup/teardown methods into fixture equivalents:

    @classmethod
def setUpClass(cls):
cls.temp_dir = Path(tempfile.mkdtemp())
cls.filepath =...