A pytest approxable dict mixin for data class
Project description
Pytest Approxable Mixin
Example
from approxable_dict import Approxable
from dataclasses import dataclass
from pytest import approx
@dataclass
class MetalProperties(Approxable):
name: str
heat_capacity: float
conductivity: float
def test_metal_equal():
mp1 = MetalProperties(name='metal1', heat_capacity=0.5, conductivity=1.)
mp2 = MetalProperties(name='metal2', heat_capacity=0.499999999, conductivity=0.9999999998)
assert approx(mp1.approxable_dict, abs=0.1) == mp2.approxable_dict
Problem
When testing codes, we usually approximate floating numbers to avoid decimal points error. To do so, we use pytest.approx
as follow
from pytest import approx
def test_approx():
a = 1.0000000000000001
b = 1.
assert approx(a, abs=0.1) == b # this will pass
assert a == b # this will fail
Moreover, we can also use this with the dictionary derived from a dataclass. For example,
from dataclasses import dataclass, asdict
from pytest import approx
@dataclass
class MetalProperties:
heat_capacity: float
conductivity: float
def test_metal_equal():
mp1 = MetalProperties(heat_capacity=0.5, conductivity=1.)
mp2 = MetalProperties(heat_capacity=0.499999999, conductivity=0.9999999998)
assert approx(asdict(mp1), abs=0.1) == asdict(mp2)
Now the problem arises when we have non-number fields in the class
@dataclass
class MetalProperties:
name: str
heat_capacity: float
conductivity: float
def test_metal_equal():
mp1 = MetalProperties(name='metal1', heat_capacity=0.5, conductivity=1.)
mp2 = MetalProperties(name='metal2', heat_capacity=0.499999999, conductivity=0.9999999998)
assert approx(asdict(mp1), abs=0.1) == asdict(mp2)
Above code will fails since attribute name
can't be approximated
##Progress
- tests
- supports nested object
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
Close
Hashes for hackinteach-pytest-approxable-0.0.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4fe9e3c28bf2a0143d3eb0a1dfe41a51d61ebe7c0957522d9f30d109d20a1eef |
|
MD5 | 4f489c972ce29e66af70f4043445a0eb |
|
BLAKE2b-256 | b741602dc46f5995e1d2ba1cace5bd1e3437ff8c78f4c72462798aac28a964c7 |
Close
Hashes for hackinteach_pytest_approxable-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | de26239106dcca649ac2e8a99d2bebf2ff53d8c45a5554e7682f5ee30782cb67 |
|
MD5 | 4fd7d73a6d062860cf62888ad2dda230 |
|
BLAKE2b-256 | 12b731190764fcb0e4897050288740ec70d02cab536fb2a6acefdf8ae2fe2d98 |