[英]Test python class with method calls in __init__
我有一个 class,它在__init__
中调用了很多方法。 由于这些方法中发生了很多事情,我想测试它们。 测试类和 class 方法需要实例化 class 然后调用它的方法。 但是如果我实例化 class,在我测试它之前这些方法已经被调用了。
我对可能的解决方案有一些想法,但我不确定它们是否可行或是否是 go 的好方法:
我可以在 class 中引入一个 kwarg,比如init=True
并在__init__
中测试它。 因此,我可以使用默认选项在创建 object 时执行所有神奇的操作,并且可以停用它以实例化 class 并单独调用函数。
我可以在其他类或函数中定义 class 之外的方法,如果可行的话,并单独测试它们。 更大的 class 的测试将变得类似于集成测试。
这取决于你想测试什么
如果您想检查所有调用是否正确发生,您可以在__init__
方法中模拟底层功能。
然后对模拟进行断言。 (Pytest 有一个间谍模拟,它不会修改原始行为,但可以作为调用计数的模拟进行测试,arguments 等......我相信你也可以用 unittest 模拟复制它)
所以你可以在一开始就模拟所有必要的东西,然后创建一个实例。
如果您想检查它是如何组装的,您可以在初始化后执行此操作。
一般来说,仅仅为了测试用例而修改源代码并不是一个好主意。
通过调试器运行您的代码,检查您作为测试人员正在寻找的内容并将其自动化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.