繁体   English   中英

在 __init__ 中使用方法调用测试 python class

[英]Test python class with method calls in __init__

我有一个 class,它在__init__中调用了很多方法。 由于这些方法中发生了很多事情,我想测试它们。 测试类和 class 方法需要实例化 class 然后调用它的方法。 但是如果我实例化 class,在我测试它之前这些方法已经被调用了。

我对可能的解决方案有一些想法,但我不确定它们是否可行或是否是 go 的好方法:

  1. 我可以在 class 中引入一个 kwarg,比如init=True并在__init__中测试它。 因此,我可以使用默认选项在创建 object 时执行所有神奇的操作,并且可以停用它以实例化 class 并单独调用函数。

  2. 我可以在其他类或函数中定义 class 之外的方法,如果可行的话,并单独测试它们。 更大的 class 的测试将变得类似于集成测试。

这取决于你想测试什么

如果您想检查所有调用是否正确发生,您可以在__init__方法中模拟底层功能。

然后对模拟进行断言。 (Pytest 有一个间谍模拟,它不会修改原始行为,但可以作为调用计数的模拟进行测试,arguments 等......我相信你也可以用 unittest 模拟复制它)

所以你可以在一开始就模拟所有必要的东西,然后创建一个实例。

如果您想检查它是如何组装的,您可以在初始化后执行此操作。

一般来说,仅仅为了测试用例而修改源代码并不是一个好主意。

通过调试器运行您的代码,检查您作为测试人员正在寻找的内容并将其自动化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM