创建项目
创建项目
虚拟环境
为项目配置独立的虚拟环境,是开发流程中的一项核心最佳实践。它能够精准隔离并管理项目所需的 Python 解释器版本与第三方依赖库,避免不同项目之间的依赖冲突,杜绝开发环境的混乱问题。同时,基于统一且纯净的环境配置,项目的协作分享也更加便捷高效。
管理 Python 项目虚拟环境的工具很多,竹子一般使用 python 官方内置的 venv 模块工具。如果读者有其他需求,可以使用其他工具管理 Python 项目虚拟环境。
创建虚拟环境
# 创建项目目录
mkdir my_project
# 进入项目目录
cd my_project
# 创建虚拟环境
python3 -m venv .venv
# 或
python -m venv .venv激活虚拟环境
激活成功后,命令行提示符会显示 (.venv) $。
source .venv/bin/activate依赖包管理
激活虚拟环境后,使用 pip instsll package_name 安装的包,只会安装到虚拟环境中。使用 pip list 可以查看已经安装的包。
为了方便协作分享,可以使用 pip freeze > ./requirements.txt 导出依赖包到 requirements.txt 文件。分享后使用 pip install -r requirements.txt 即可安装依赖项。
退出虚拟环境
退出后,命令行提示符会恢复正常,Python 和 pip 命令将使用系统全局版本。
deactivate删除虚拟环境
删除 .venv 目录,即可删除虚拟环境。
# 确保已退出环境
deactivate
# 删除目录
rm -rf .venv项目结构
构建项目过程中,一个合理的项目结构必不可少。它可以降低维护成本、设配团队合作、增强扩展性、降低上手门槛。
优秀的目录结构是什么样子的呢?问一下 AI 吧!
自动化测试项目结构/
├── business/ # 业务逻辑层(接口封装层,解耦用例与接口细节或者 Web 页面操作封装)
│ ├── __init__.py
│ ├── api/ # 按业务模块封装接口,例如下述:
│ │ ├── __init__.py
│ │ ├── login_api.py # 登录接口封装(如获取token的接口)
│ │ ├── login_page.py # 登录页面模块操作封装(如页面登录操作)
│ │ ├── user_api.py # 用户模块接口封装(查询、新增、修改、删除用户)
│ │ ├── user_page.py # 用户页面模块操作封装(查询、新增、修改、删除用户)
│ │ ├── order_api.py # 订单模块接口封装(创建订单、查询订单、取消订单)
│ │ └── product_api.py # 商品模块接口封装
│ └── business_process.py # 业务流程封装(多接口联动,如“下单流程=登录→选商品→创建订单→支付”)
├── cases/ # 自动化用例目录(仅调用业务层,不写具体逻辑)
│ ├── __init__.py
│ ├── conftest.py # pytest夹具配置(全局前置/后置、获取token、数据库连接)
│ ├── test_login/ # 登录模块用例(按业务模块划分,便于管理)
│ │ ├── __init__.py
│ │ └── test_login_case.py # 登录用例
│ ├── test_user/ # 用户模块用例
│ │ ├── __init__.py
│ │ ├── test_user_query.py # 用户查询用例
│ │ └── test_user_create.py # 用户新增用例
│ ├── test_order/ # 订单模块用例
│ │ ├── __init__.py
│ │ └── test_order_create.py # 创建订单用例
│ └── test_business_flow/ # 业务流程用例(多接口联动)
│ ├── __init__.py
│ └── test_order_flow.py # 下单全流程用例
├── common/ # 【核心】公共工具模块(复用性代码,核心层)
│ ├── __init__.py # 标记为Python包
│ ├── config_handler.py # 配置文件读取工具(yaml/ini/json/toml等,统一对外提供配置)
│ ├── log_handler.py # 日志配置与输出工具(格式、轮转、存储)
│ ├── request_handler.py # 接口请求封装(requests/aiohttp,处理token、签名、超时)
│ ├── data_handler.py # 测试数据读取工具(excel/csv/json/yaml/toml等,数据驱动)
│ ├── db_handler.py # 数据库操作封装(MySQL/Redis/MongoDB,数据校验)
│ ├── assert_handler.py # 自定义断言工具(响应结果通用断言,如状态码、字段校验)
│ ├── decorators.py # 自定义装饰器(重试、计时、异常捕获、接口签名)
│ └── token_handler.py # Token管理工具(获取、刷新、缓存,单独抽离更清晰)
├── config/ # 配置文件目录(与代码解耦,环境切换核心)
│ ├── __init__.py
│ ├── env_config.yaml # 环境配置(测试/预发/生产的base_url、数据库信息等)
│ ├── test_config.yaml # 测试配置(用例超时、重试次数、报告路径等)
│ └── log_config.yaml # 日志配置(级别、路径、格式、轮转策略)
├── data/ # 测试数据目录(数据驱动,与用例分离)
│ ├── test_case_data/ # 用例参数化数据(按模块划分)
│ │ ├── login_data.yaml # 登录用例数据(正常/异常场景)
│ │ ├── user_data.json # 用户模块用例数据
│ │ ├── order_data.csv # 订单模块用例数据
│ │ └── order_flow_data.xlsx # 下单流程用例数据
│ └── static_data/ # 静态常量数据(枚举、固定参数、预期结果)
│ ├── constants.py # 常量定义(HTTP状态码、接口返回码、请求头)
│ └── expected_result.py # 固定预期结果(如查询默认用户的返回数据)
├── docs/ # 项目文档目录(团队协作必备)
│ ├── api_docs.md # 接口文档(地址、参数、请求方式、响应示例)
│ ├── project_design.md # 项目设计文档(分层逻辑、目录结构、核心工具)
│ ├── usage_guide.md # 使用指南(环境搭建、运行命令、问题排查)
│ └── change_log.md # 变更日志(用例新增、代码修改记录)
├── fixtures/ # Fixture 夹具目录
│ └──login_fixture.py # login 模块相关 Fixture 夹具
├── log/ # 项目日志目录
│ ├── all.log # 日志文件
│ └──all.log.1 # 日志备份文件
├── requirements.txt # 项目依赖包(指定版本,避免环境问题)
├── run.py # 项目启动文件(入口)
├── pytest.ini # pytest配置文件(用例路径、报告格式、参数)
└── README.md # 项目说明(必选,快速上手:环境、运行、目录说明)
最后更新于