一个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中硬件令牌的证书访问私钥   java SQLite数据库在何处不能正确使用?   java在编辑器中显示IntelliJidea中的编译错误   java将atributes放到X500 NameBuilder Bouncy Castle,生成PKCS10   java顺序ant条件不会停止   spring如何发送请求并上传带有java对象的文件,比如@RequestParam CommonsMultipartFile file、@RequestBody User userDetailsId?   java如何在Spring中根据配置创建多个相同类型的bean?   java我需要一个框架来使用依赖注入吗?   如何使用java在excel中插入换行符?   java从安卓文件加载数组   安卓 Dateformat不返回实时Java   java如何将基本int传递给AsyncTask?   java音频相似性库   Spark:OutOfMemoryError:Java堆空间   java My代码未按预期工作。十进制输出不是它应该的样子   财务Java编译器告诉我,我并没有启动变量“interest”或“pmt”