跳至内容
创建项目

创建项目

虚拟环境

为项目配置独立的虚拟环境,是开发流程中的一项核心最佳实践。它能够精准隔离并管理项目所需的 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                      # 项目说明(必选,快速上手:环境、运行、目录说明)
最后更新于