一个pytest可接受的数据类dict mixin
hackinteach-pytest-approxable的Python项目详细描述
Pytest可接近混音
示例
frompytest_approxableimportApproxablefromdataclassesimportdataclassfrompytestimportapprox@dataclassclassMetalProperties(Approxable):name:strheat_capacity:floatconductivity:floatdeftest_metal_equal():mp1=MetalProperties(name='metal1',heat_capacity=0.5,conductivity=1.)mp2=MetalProperties(name='metal2',heat_capacity=0.499999999,conductivity=0.9999999998)assertapprox(mp1.approxable_dict,abs=0.1)==mp2.approxable_dict
问题
在测试代码时,我们通常对浮点数进行近似处理,以避免小数点错误。为此,我们使用pytest.approx
,如下所示
此外,我们还可以将其用于从dataclass派生的字典。例如
fromdataclassesimportdataclass,asdictfrompytestimportapprox@dataclassclassMetalProperties:heat_capacity:floatconductivity:floatdeftest_metal_equal():mp1=MetalProperties(heat_capacity=0.5,conductivity=1.)mp2=MetalProperties(heat_capacity=0.499999999,conductivity=0.9999999998)assertapprox(asdict(mp1),abs=0.1)==asdict(mp2)
现在,当类中有非数字字段时,问题就出现了
@dataclassclassMetalProperties:name:strheat_capacity:floatconductivity:floatdeftest_metal_equal():mp1=MetalProperties(name='metal1',heat_capacity=0.5,conductivity=1.)mp2=MetalProperties(name='metal2',heat_capacity=0.499999999,conductivity=0.9999999998)assertapprox(asdict(mp1),abs=0.1)==asdict(mp2)
以上代码将失败,因为属性name
无法近似
进展
- []测试
- []支持嵌套对象
- 项目
标签: