Python:模拟Kafka进行集成测试

7

我对集成测试还比较新。我有两个服务,它们使用Kafka互相发送消息。然而,在我的集成测试中,我不一定需要运行Kafka才能运行测试。是否有一种标准的方法来模拟Kafka?或者这是我需要自己创建的东西,即MockKafka队列,并在应用程序适当地打补丁?此外,这是否违反了集成测试应该做的事情?我的看法是,我没有测试Kafka的任何功能,因此为了集成测试的目的,应该进行模拟处理。


1
一年没有回复了,请问有任何更新吗?我有类似的情况。 - Sameer Mirji
1
如果你正在测试的一部分取决于Kafka的行为,那么使用真实的Kafka服务器是必不可少的。如果你正在测试你的服务如何从Kafka接收消息以及它对它们的处理方式,那么你可以很容易地将其存根化。 - user1658296
1个回答

0

模拟Kafka本身是不可行的,因为它的协议不是通用的RFC支持标准(不像HTTP),并且只有一个实现。

在单元测试级别上,您可以抽象和模拟需要Kafka的函数,但这不是您的情况。您想进行集成测试,因此最有可能需要涉及实际的Kafka以进行实际交互测试。

为了以最小的努力涉及真正的Kafka,我会使用特殊的自包含Docker镜像(例如:https://github.com/up9inc/async-ms-demo/tree/main/kafka)。构建它并将其与9092端口一起运行。

对于与Kafka的集成测试,我的原则是不模拟Kafka本身,并使用我称之为“模拟演员”的方式模拟“不需要/无关”的服务。

“模拟演员”方法在这里详细描述:https://up9.com/mock-actor-approach-for-kafka(由我撰写的文章)。也有一个实现这些功能的工具(http://mockintosh.io)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接