测试中通过继承其他类重写父类方法的模式是否有专属名称?
这种实现模式的名称及说明
你这种通过多重继承注入模拟依赖的做法,属于**测试替身(Test Double)范畴里的模拟对象(Mock Object)**实现方式,是单元测试中隔离外部依赖的常见技巧之一。
具体说明:
- 测试替身是单元测试里用来替代真实外部依赖的通用概念,目的是让测试不依赖外部系统(比如数据库、第三方API),保证测试的稳定性和速度。
- 你这里的
MockDatabase就是一个模拟对象,它重写了原类中依赖外部资源的方法,预设了固定返回值。 - 通过让
TestAPI同时继承MockDatabase和API,利用Python的方法解析顺序(MRO),模拟方法会优先被调用,从而覆盖原类中依赖外部的逻辑,实现测试隔离。
示例代码整理:
api.py
class API: ... def get_names(self) -> list[str]: names = self._fetch_names_from_database() # 调用外部资源 # 执行其他操作... return names
test_api.py
from api import API class MockDatabase: def _fetch_names_from_database(self, *args, **kwargs): return ["test_name_1", "test_name_2"] class TestAPI(MockDatabase, API): pass test_api = TestAPI() # 对test_api.get_names()执行单元测试
内容的提问来源于stack exchange,提问作者connesy
相关产品推荐
相关产品推荐

