A simple plugin to use with pytest
Project description
A simple plugin to use with pytest
This pytest plugin was generated with Cookiecutter along with @hackebrot’s cookiecutter-pytest-plugin template.
Features
Readable diffs for failed tests
Customizable diffs for your classes
Requirements
pytest
deepdiff
pprintpp
Installation
You can install “pytest-diff” via pip from PyPI:
$ pip install pytest-diff
Usage
class Person:
def __init__(self, name, age, favorites):
self.name = name
self.age = age
self.favorites = favorites
def test_person():
a = Person("Alice", age=21, favorites={"food": "spam", "movie": "Life of Brian"})
b = Person("Alice", age=21, favorites={"food": "eggs", "movie": "Life of Brian"})
assert a == b
Running pytest
gives:
______________________________ test_person ______________________________
def test_person():
a = Person("Alice", age=21, favorites={'food': 'spam', 'movie': 'Life of Brian'})
b = Person("Alice", age=21, favorites={'food': 'eggs', 'movie': 'Life of Brian'})
> assert a == b
E assert
E <test_person.Person object at 0x7fa326d769e8>
E ==
E <test_person.Person object at 0x7fa326d76be0>
E {'values_changed': {"root.favorites['food']": {'new_value': 'spam', 'old_value': 'eggs'}}}
examples/test_person.py:11: AssertionError
To customize diffs for a specific type, register it with the registry:
import pytest_diff
class Car:
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
@pytest_diff.registry.register(Car)
def diff(x, y):
return [
f"{x.make} vs {y.make}",
f"{x.model} vs {y.model}",
f"{x.year} vs {y.year}",
]
def test_car():
c1 = Car("Toyota", "Prius", 2010)
c2 = Car("Honda", "Accord", 2009)
assert c1 == c2
Then running pytest
shows your custom diff:
def test_car():
c1 = Car("Toyota", "Prius", 2010)
c2 = Car("Honda", "Accord", 2009)
> assert c1 == c2
E assert
E <test_custom.Car object at 0x7f0e9b0ccd68>
E ==
E <test_custom.Car object at 0x7f0e9b0cceb8>
E Toyota vs Honda
E Prius vs Accord
E 2010 vs 2009
examples/test_custom.py:21: AssertionError
Contributing
Contributions are very welcome. Tests can be run with tox, please ensure the coverage at least stays the same before you submit a pull request.
License
Distributed under the terms of the MIT license, “pytest-diff” is free and open source software
Issues
If you encounter any problems, please file an issue along with a detailed description.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pytest_diff-0.1.14-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bbed16b05f5a73d19575f293d6777cbd2b1de7e59df5e8a933574177bdd0552b |
|
MD5 | 27007667f76dcfedfac25638dcb613b0 |
|
BLAKE2b-256 | d9c46f482146c5ae702a404bff24d6ed340fa63a039960aa867bc98a94e5b191 |