全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货  >  Python技术干货  >  详情

用Python和Conu测试容器

来源:千锋教育
发布人:xqq
2023-11-05

推荐

在线提问>>

越来越多的开发人员使用容器开发和部署他们的应用。这意味着可以轻松地测试容器也变得很重要。Conu(containerutilities的简写)是一个Python库,让你编写容器测试变得简单。本文向你介绍如何使用它测试容器。

开始吧

首先,你需要一个容器程序来测试。为此,以下命令创建一个包含一个容器的Dockerfile和一个被容器伺服的Flask应用程序的文件夹。

$mkdircontainer_test

$cdcontainer_test

$touchDockerfile

$touchapp.py

将以下代码复制到app.py文件中。这是惯常的基本Flask应用,它返回字符串“HelloContainerWorld!”。

fromflaskimportFlask

app=Flask(__name__)

@app.route('/')

defhello_world():

return'HelloContainerWorld!'

if__name__=='__main__':

app.run(debug=True,host='0.0.0.0')

创建和构建测试容器

为了构建测试容器,将以下指令添加到Dockerfile。

FROMregistry.fedoraproject.org/fedora-minimal:latest

RUNmicrodnf-yinstallpython3-flask&µdnfcleanall

ADD./app.py/srv

CMD["python3","/srv/app.py"]

然后使用DockerCLI工具构建容器。

$sudodnf-yinstalldocker

$sudosystemctlstartdocker

$sudodockerbuild.-tflaskapp_container

提示:只有在系统上未安装Docker时才需要前两个命令。

构建之后使用以下命令运行容器。

$sudodockerrun-p5000:5000--rmflaskapp_container

*Runningonhttp://0.0.0.0:5000/(PressCTRL+Ctoquit)

*Restartingwithstat

*Debuggerisactive!

*DebuggerPIN:473-505-51

最后,使用curl检查Flask应用程序是否在容器内正确运行:

$curlhttp://127.0.0.1:5000

HelloContainerWorld!

现在,flaskapp_container正在运行并准备好进行测试,你可以使用Ctrl+C将其停止。

创建测试脚本

在编写测试脚本之前,必须安装conu。在先前创建的container_test目录中,运行以下命令。

$python3-mvenv.venv

$source.venv/bin/activate

(.venv)$pipinstall--upgradepip

(.venv)$pipinstallconu

$touchtest_container.py

然后将以下脚本复制并保存在test_container.py文件中。

importconu

PORT=5000

withconu.DockerBackend()asbackend:

image=backend.ImageClass("flaskapp_container")

options=["-p","5000:5000"]

container=image.run_via_binary(additional_opts=options)

try:

#Checkthatthecontainerisrunningandwaitfortheflaskapplicationtostart.

assertcontainer.is_running()

container.wait_for_port(PORT)

#RunaGETrequeston/port5000.

http_response=container.http_request(path="/",port=PORT)

#Checktheresponsestatuscodeis200

asserthttp_response.ok

#Gettheresponsecontent

response_content=http_response.content.decode("utf-8")

#Checkthatthe"HelloContainerWorld!"stringisserved.

assert"HelloContainerWorld!"inresponse_content

#Getthelogsfromthecontainer

logs=[lineforlineincontainer.logs()]

#CheckthetheFlaskapplicationsawtheGETrequest.

assertb'"GET/HTTP/1.1"200-'inlogs[-1]

finally:

container.stop()

container.delete()

测试设置

这个脚本首先设置conu使用Docker作为后端来运行容器。然后它设置容器镜像以使用你在本教程第一部分中构建的flaskapp_container。

下一步是配置运行容器所需的选项。在此示例中,Flask应用在端口5000上提供内容。于是你需要暴露此端口并将其映射到主机上的同一端口。

最后,用这个脚本启动容器,现在可以测试了。

测试方法

在测试容器之前,检查容器是否正在运行并准备就绪。示范脚本使用container.is_running和container.wait_for_port。这些方法可确保容器正在运行,并且服务在预设端口上可用。

container.http_request是request库的包装器,可以方便地在测试期间发送HTTP请求。这个方法返回requests.Responseobject,因此可以轻松地访问响应的内容以进行测试。

conu还可以访问容器日志。又一次,这在测试期间非常有用。在上面的示例中,container.logs方法返回容器日志。你可以使用它们断言打印了特定日志,或者,例如在测试期间没有异常被引发。

conu提供了许多与容器接合的有用方法。文档中提供了完整的API列表。你还可以参考GitHub上提供的示例。

运行本教程所需的所有代码和文件也可以在GitHub上获得。对于想要进一步采用这个例子的读者,你可以看看使用pytest来运行测试并构建一个容器测试套件。

以上内容为大家介绍了用Python和Conu测试容器,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。http://www.mobiletrain.org/

相关文章

如何使用python中的help函数?

如何使用python的callable函数?

python gensim库是什么?

python中xluntils库是什么?

python中getattr()是什么?

开班信息 更多>>

课程名称
全部学科
咨询

HTML5大前端

Java分布式开发

Python数据分析

Linux运维+云计算

全栈软件测试

大数据+数据智能

智能物联网+嵌入式

网络安全

全链路UI/UE设计

Unity游戏开发

新媒体短视频直播电商

影视剪辑包装

游戏原画

    在线咨询 免费试学 教程领取