【发布时间】:2020-11-02 21:54:18
【问题描述】:
在本地开发 Docker 化的 AWS 应用程序时,一种常见的做法是使用 LocalStack 模拟 Amazon 的服务。让 Python 应用程序在测试时与 LocalStack 对话的一种方法是在 docker-compose 文件中发送 monkeypatch the Boto Client and ServiceResource 和 use the "link" feature。
不幸的是,Docker-Compose 参考手册建议不要这样做。看来 Docker 可能会删除链接功能。相反,他们建议我们应该使用 docker-compose 文件的内部网络功能。这意味着不是通过 localhost(例如 http://localhost:4566)访问 LocalStack 服务,而是通过类似 http://localstack:4566 的方式访问,前提是服务名称是“localstack”。
有没有办法更改猴子补丁配置以使其正常工作?这是标准的猴子补丁代码:
import localstack_client.session
import pytest
@pytest.fixture(autouse=True)
def boto3_localstack_patch(monkeypatch):
session_ls = localstack_client.session.Session()
monkeypatch.setattr(boto3, "client", session_ls.client)
monkeypatch.setattr(boto3, "resource", session_ls.resource)
没有明显的方法表明测试应该使用不同的主机名,那么我该怎么做呢?
【问题讨论】:
标签: python docker-compose pytest localstack