一个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,如下所示

^{pr2}$

此外,我们还可以将其用于从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无法近似

进展

  • []测试
  • []支持嵌套对象

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
用于切换状态结果的枚举的java输入   检测*NIX上打开的端口时出现java问题   java捕获和保存屏幕截图   java SLF4JLogback:基于日志级别的多模式   Java从字符串中删除动态子字符串   在spring引导中contextLoads测试时运行java Liquibase   基于规则集的任意嵌套POJO的java任意就地转换   java如何做,边做边循环这段代码?   java是什么导致jmh测量中的错误?   java Spring RabbitTemplate执行方法可见性   java jms创建连接http超时weblogic   java如何在JMapViewer中的两点之间放置像箭头一样的图像   在我的形状计算器Java程序中使用带有Switch/Case语句的循环   字符串如何在Java中比较字符和数字