Python 3.x 如何测试tty';s

Python 3.x 如何测试tty';s,python-3.x,docker,command-line-interface,tty,Python 3.x,Docker,Command Line Interface,Tty,我们正在尝试将我们的应用程序容器化。因此,数据库将很快成为容器,成为网桥网络的一部分。此网络上的容器可以轻松访问数据库端口。但这些端口无法从网络外部访问。现在我当然可以发布所有端口,但这有点违背网桥网络的目的,我也可以在主机网络上运行它们。所以我试图避免这种情况 但是仍然需要不时地对数据库执行一些维护任务。例如,创建新表/索引等 我目前的策略是编写一个命令行工具,它有一个connect命令。此connect命令使用dockerfile构建docker容器,如下所示: FROM python:3.

我们正在尝试将我们的应用程序容器化。因此,数据库将很快成为容器,成为网桥网络的一部分。此网络上的容器可以轻松访问数据库端口。但这些端口无法从网络外部访问。现在我当然可以发布所有端口,但这有点违背网桥网络的目的,我也可以在主机网络上运行它们。所以我试图避免这种情况

但是仍然需要不时地对数据库执行一些维护任务。例如,创建新表/索引等

我目前的策略是编写一个命令行工具,它有一个connect命令。此connect命令使用dockerfile构建docker容器,如下所示:

FROM python:3.8

WORKDIR /tmp
COPY requirements.txt setup.py ./
RUN pip3 install -r requirements.txt \
    && rm /tmp/*

RUN mkdir /app
WORKDIR /app

COPY . .

RUN pip3 install -e .

ENTRYPOINT [ "/bin/bash" ]
因此,它导入项目并使用pip安装它。然后,它以交互模式运行这个docker容器(也可以装载配置并将其连接到该
connect
命令的参数给定的网络)

所以当我跑步的时候

管理连接我的网络
我被扔进一个连接到
my_net
的容器中,该容器安装了CLI
manage
。该容器允许我运行一次性命令(脚本)来管理此网络上的数据库

问题是:我如何为此编写测试

我使用构建CLI,因此我可以使用
CliRunner
调用命令。但是如何处理docker run命令的
-it
标志抛出的tty,该标志由带有
os.system
的connect函数调用

我想把更多的命令传递给这个tty并观察输出。有没有办法以某种方式将一个tty捕获为python对象?我发现的唯一一件事是它似乎没有什么用处