我想在使用时测试一个脚本 kafka-python
包裹。我想测试函数的返回对象的类型
def _get_kafka_consumer() -> KafkaConsumer:
consumer = KafkaConsumer(bootstrap_servers=_KAFKA_BOOTSTRAP_SERVICE,
auto_offset_reset='earliest')
consumer.subscribe([_KAFKA_TOPIC_INPUT])
return consumer
我的测试课看起来像
class TestVoiceToText(unittest.TestCase):
def test_get_kafka_consumer_output_type(self):
result = _get_kafka_consumer()
self.assertIsInstance(result, KafkaConsumer)
当然,它不会通过,因为没有kafka集群在运行 KafkaConsumer
无法创建。我怎么能嘲笑你的回归呢 KafkaConsumer(...)
属于类型 KafkaConsumer
不需要调用实际的构造函数?
2条答案
按热度按时间sigwle7e1#
你会想要
spec
在嘲笑中。你可以用autospec
在这里我相信成功。speccing将您的mock限制为您要模拟的对象的原始api,并允许它通过isinstance
还有测试。以下是有关自动选择的文档:https://docs.python.org/3.3/library/unittest.mock.html#autospeccing下面是我如何做你的测试:
2j4z5cfb2#
我设法用计算机解决了这个问题
patch
函数来自unittest.mock
包裹:它只检查
_get_kafka_consumer()
实际上是通过调用函数返回的对象KafkaConsumer()
. 我们不在乎这个函数实际上在做什么。