第8章:自动化测试与CI-CD_第1页
第8章:自动化测试与CI-CD_第2页
第8章:自动化测试与CI-CD_第3页
第8章:自动化测试与CI-CD_第4页
第8章:自动化测试与CI-CD_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章:自动化测试与CI/CD从手动到自动:构建可靠的Python后端交付流水线目录自动化测试基础:为什么我们需要自动化测试?Pytest实战:单元测试、集成测试与API测试测试覆盖率:衡量你的测试质量CI/CD核心概念:持续集成与持续交付GitHubActions:构建你的第一条CI/CD流水线实战演练:为你的项目添加CI/CD常见问题与排查总结与课后任务01自动化测试基础为什么我们需要自动化测试?为什么需要自动化测试?效率提升短时间内执行大量测试用例,远快于人工测试。质量保障减少人为错误,确保代码变更不引入新bug。快速反馈开发早期发现问题,显著降低修复成本。回归测试完美解决版本迭代中的回归测试难题。测试金字塔:不同层级的测试单元测试测试最小的代码单元(如函数、方法)。成本低、速度快、覆盖率高。集成测试测试多个模块之间的交互。成本中等、速度中等。E2E测试模拟用户真实场景的测试。成本高、速度慢、覆盖率低。02Pytest实战单元测试、集成测试与API测试Pytest:更强大的Python测试框架简单易用无需继承TestCase,直接使用函数和assert语句。丰富的插件生态支持HTML报告、并行执行、失败重试等。兼容性好可以运行unittest和nose的用例。强大的Fixture灵活的测试前置和后置处理。PytestvsUnittest核心特性对比Pytest基础:编写你的第一个测试代码示例#test_sample.pydefadd(a,b):returna+bdeftest_add():assertadd(1,2)==3运行测试pytesttest_sample.py-v核心规则测试文件以test_开头或_test结尾。测试函数以test_开头。使用标准的assert语句进行断言。Pytest核心:Fixture什么是Fixture?用于为测试函数提供前置条件(如数据库连接、测试数据)和后置清理。定义Fixture#conftest.py@pytest.fixture(scope="module")defapi_client():...#创建并关闭Session@pytest.fixturedeftest_data():...#提供测试数据使用Fixturedeftest_api_call(api_client,test_data):response=api_client.post(...)assertresponse.status_code==200核心优势依赖注入,清晰解耦灵活的作用域(function/module/session)Pytest实战:API测试代码示例#test_api.pydeftest_create_user(api_client):payload={"username":"johndoe","email":"john@"}response=api_client.post("/api/users",json=payload)assertresponse.status_code==201data=response.json()assertdata["username"]=="johndoe"常用断言status_code检查响应状态码,确保请求成功。response.json()解析JSON响应体,获取具体数据。assertIn/assertNotIn检查某个键或值是否存在于响应数据中。Pytest结合requests库,可以非常方便地进行API测试,确保接口的稳定与可靠。03测试覆盖率衡量你的测试质量测试覆盖率:衡量你的测试质量什么是测试覆盖率?衡量被测试代码占总代码的比例,是评估测试完整性的重要指标。如何使用pytest-covpipinstallpytest-cov

pytest--cov=./myapptests/覆盖率报告解读显示每个文件的覆盖率百分比定位未被覆盖的具体代码行注意:高覆盖率不等于高质量,但低覆盖率通常意味着风险。pytest-cov覆盖率报告示例04CI/CD核心概念持续集成与持续交付CI/CD是什么?持续集成(CI)频繁合并代码,通过自动化构建与测试,快速发现集成错误。持续交付(CD)自动部署到测试环境,经批准后可随时发布到生产环境。持续部署(CD)代码通过测试后自动部署到生产环境,实现完全自动化交付。CI/CD自动化流程示意一个典型的CI/CD流水线代码提交开发者将代码推送到Git仓库。触发构建CI服务器检测到代码变更,触发流水线。构建编译代码、安装依赖,生成可执行文件。测试运行单元测试、集成测试,确保代码质量。分析代码质量分析、安全漏洞扫描。部署自动部署到测试或生产环境。05GitHubActions构建你的第一条CI/CD流水线GitHubActions简介什么是GitHubActions?GitHub内置的CI/CD服务,可以自动化你的软件开发工作流程。核心概念Workflow一个自动化的流程,由一个或多个Job组成。Job一个Workflow中可以并行执行的任务单元。Step一个Job中的单个任务,可以是Action或命令。Action&Runner可重用代码单元与执行Workflow的服务器。GitHubActions实战:一个Python项目的CI流程创建工作流文件:.github/workflows/ci.ymlname:PythonCIon:push:branches:[main]pull_request:branches:[main]jobs:build-and-test:runs-on:ubuntu-lateststeps:-uses:actions/checkout@v4-name:SetupPythonuses:actions/setup-python@v5with:python-version:'3.10'-name:Installdependencies-name:Runtestswithcoverage-name:UploadcoveragetoCodecov06实战演练为你的项目添加CI/CD动手任务:为你的项目添加CI/CD任务描述选择或创建一个Python项目(如Flask/FastAPI)。编写至少3个单元测试和2个API测试。使用pytest-cov生成测试覆盖率报告。在GitHub创建仓库并推送代码。配置GitHubActions工作流,实现自动化CI/CD。评判标准测试用例是否全部通过。测试覆盖率是否达到80%以上。GitHubActions工作流是否能正常运行。07常见问题与排查解决你在实践中可能遇到的问题常见问题与排查GitHubActions工作流没有被触发?检查工作流文件的路径和名称是否正确,以及触发条件(`on`字段)是否符合预期。测试在本地通过,但在CI上失败?检查CI环境与本地环境的一致性,确认依赖是否完整,以及是否存在硬编码的本地路径。如何在CI中使用环境变量和密钥?在仓库设置中添加,然后在工作流文件中通过`env`或`secrets`上下文进行引用。测试覆盖率报告如何在GitHub上展示?使用`codecov-action`上传报告,并在README中添加覆盖率徽章。核心排查思路仔细阅读错误日志,从环境、配置、依赖、权限四个维度逐步定位问题根源。08总结与课后任务巩固学习内容,继续深入实践总结自动化测试是保障软件质量和提升开发效率的关键。Pytest是Python生态中功能强大、易用的测试框架。测试覆盖率是衡量测试质量的重要指标,但不是唯一指标。CI/CD是现代软件开发的最佳实践,能够实现快速、可靠的交付。GitHubActions是一个强大的工具,可以轻松构建CI/CD流水线。课后任务深入学习Pytest探索更多高级特

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论