unit-testing - 如何使用 rabbitmq 在 python 中编写单元/集成测试?

标签 unit-testing testing integration-testing rabbitmq automated-tests

我有一个使用 rabbitmq 编写的 python 项目,我想知道我应该如何为它编写单元测试/什么是最佳实践。

由于代码需要在后台运行 rabbitmq 服务器,所以我想出了三个选项:

  1. 编写一些检查程序,在测试套件开始时检查 rabbit 是否正在运行,如果没有运行则失败 - 不理想,因为它需要手动启动 rabbitmq
  2. 在每个测试设置上使用 rabbitmq 自动启动一个进程,并在拆卸时终止它——出于某种原因,这会产生连接错误
  3. 模拟 rabbitmq - 有人对此有任何建议或提示吗?

谢谢!

乔恩

最佳答案

当然,我更喜欢将 rabbitmq 排除在单元测试之外。

我正在重新编写一个假的上层类以避免 Rabbit mq 依赖项,它为我提供了很少的接口(interface)来调用发布者方法或调用一个接收者检查器方法。

class FakePublisher(Publisher)
    def __init__(self):
        pass
    def call_consumer(self, msg):
        self.consumer(msg)

class test(unittest.TestCase):
    def test_foo(self):
        publisher = FakePublisher()
        ret = publisher.call_consumer(msg("foo"))
        self.assertEqual(ret, True)

关于unit-testing - 如何使用 rabbitmq 在 python 中编写单元/集成测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12453639/

相关文章:

javascript - 纯粹使用 Javascript 构建集成测试并在浏览器中运行是一个坏主意吗?

scala - 对 SBT 中构建的项目使用通用测试实用程序文件

java - Spring Boot 中的 @IntegrationTest 与 'normal' 单元测试结合运行时会使协和测试失败

c# - AutoDataAttribute 的具体对象创建逻辑调用所有属性 getter 一次

Angular 单元测试错误 : No component factory found for Component. Did you add it to @NgModule.entryComponents

express - 使用 Jest 测试 ExpressJS 端点

python - 如何在 Python 中模拟一个类?

c# - 如何为使用流作为参数的方法编写 unitTest

phpspec 测试文件内容/文件操作

ios - 自动化 iOS MDM 配置文件测试