开发组通用项目框架结构规范_v0.4.0

更新记录

时间版本内容修订者备注
2024/06/110.1.0创建henry.xu
2024/06/170.2.0新增部分内容henry.xu
2024/07/080.3.0新增开发组交付内容部分henry.xu
2024/07/250.4.0新增注意事项henry.xu

重要:注意事项

    1. 导入包的过程中要避免循环导入;
    • 分层级组织包:将包分层级组织,包只能从比自己低层次的包导入。这样可以减少循环依赖的可能性。
    • 使用相对导入:在同一包或子包内,使用相对导入避免直接依赖。
    • 利用 init.py 文件:在 init.py 中合理导入模块,可以使得包的导入更加清晰和简洁。
    1. 使用相对路劲时,请注意工作目录才是相对路径的起点;推荐调试时合理使用test部分;

1. 通用项目框架结构规范

test

开发人员测试用文件夹

documents

  • 用于存放开发相关文档

- static

  • 包括但不限于用于存放readme.md所引用的截图文件等

- readme.md(必要)

  • 开发文档
# 1. 项目信息
- 项目名称:xxxx
- 项目开发python版本: 3.7

| 时间 | 版本 | 内容 |修订者|备注 |
|--|--|--|--|--|--|
| 2024/06/11 | 0.1.0 |创建| henry.xu|



# 2. 脚本结构

参考:
- 1.进入需要生成目录结构的文件夹,在路径处输入cmd,进入命令行窗口;
- 2.输入命令tree/f>list.txt并回车,就会在当前目录下生成一个名为list.txt的文件,并且里面有目录结构;
- 3.将需要的目录结构粘贴到readme.md文档中,在目录头和目录尾加上```。

# 3. 脚本运行逻辑



# 4. 配置文件参数 - config.ini

config.ini配置文件中所有的参数说明
eg.
| 参数名          | 参数说明                                                     |
| --------------- | ------------------------------------------------------------ |
| [step]          | 测试Case参数,为t时表示当前Case需要运行,可通过UI界面进行选择,Case运行结束后会修改为f,每新增一个Clas



# 5. 脚本运行方式

1. 双击ModuleSSDTest文件夹下run.bat
2. 等待出现Module SSD Test UI设置界面
3. 勾选需要运行的测试报告、勾选需要运行的测试Case、设置参数
4. 点击确定开始运行



# 6. 注意事项
	- 1.....
	- 2.....


- requirment.txt(必要)

  • 项目依赖库的文本文件
  • 生成方式
pip freeze > requirements.txt  # 生成requirements.txt
pip install -r requirements.txt # 使用requirements.txt

- change_log.md(必要)

  • 版本变更历史

  • 变更内容分为以下类型:
    - 新增:功能新增;
    - 优化:已有功能的改进;
    - 修复:已知问题的修复;

  • 版本状态分为以下类型:
    - 已发布
    - 开发中

  • 版本号共三位:x.x.x

  • 版本控制:V1.0.0一位数控制:

    • 第一位数控制:由需求主导进版,大版本,修改或新增>50%的情况下进版;Note:特殊情况下开发也可以介入;
    • 第二位数控制:由需求控制进版,修改或新增<50%下进版;
    • 第三位数控制:由开发控制进版,debug程序和维护程序;

------
# 范例:

## Version 2.0.0  (2023年6月30日)

### 作者:XXX

### 变更内容:



- [新增]:change_log样式:新增change_log.md的模版。用于统一change_log样式。
- [优化]:change_log样式:优化change_log.md的模版。用于统一change_log样式。
- [修复]: 修复1的具体内容

### 版本状态:

- 已发布

------

## Version 1.0.0  (2023年6月29日)

### 作者:XXX

### 变更内容:

- [优化]:优化v1.1样式:优化change_log.md的模版。用于统一change_log样式。

### 版本状态:

- 开发中

------

src

- static

  • 存放静态文件,即程序会引用,但是不对其进行修改的所有类型文件;例如引用的图片,使用的第三方tools: pwrtest.exe,BiosConfigUtility64.exe等。

- templates

  • 存放配置文件,即只有程序会修改和引用的文件;例如json,yml等配置文件

- gui

  • 前端模块部分

- modules

  • 功能模块部分
- utils或者utils.py
  • 公共静态方法

  • 当功能模块较少时,可以考虑直接在一个名为 utils.py 的单个文件中编写和组织代码;但如果功能模块很多,可以采取以下步骤:

      1. 创建 utils:新建一个名为 utils 的文件夹或包。
      1. 按类别组织文件:在 utils 包内,根据功能的类别创建多个 .py 文件,每个文件专门负责一个相关的功能模块。
        例如:
      • utils/network.py:处理与网络相关的功能。
      • utils/files.py:处理文件操作的功能。
      • utils/math.py:包含数学计算函数。
      • 等等…
eg.结构如下
— utils包
    |
	|—— network.py.py # 处理与网络相关的功能。
	|—— files.py # 处理文件操作的功能。

  • 理论上的基本方法单元:不包含捕获语句(try-expect);包含结果输出(bool或其他);
- repository
  • 功能类,越简单越好
- 功能1.py

功能1的实现

- 功能2.py

功能2的实现

- service或者service.py
  • 功能类自由组合
- 复合功能实现.py
  • 对于repository中基本功能单元的自由组合

- main.py(必要)

  • 程序入口
  • python script在pycharm中的设置位置File->settings->Editor->File and CodeTemplates->Python Script;
  • 可将以下代码放入pycharm中的python script,在创建文件时自动生成以下代码;
  • 然后在新建的py文件中,运行以下代码,产生必要的头文件,主要目的是记录当前python版本;
# 记录当前python版本
import sys
from datetime import datetime

def generate_file_header(file_path):
    current_time = datetime.now().strftime("%d/%m/%Y  %I:%M %p")
    # 以下为py文件注释内容,可自行修改
    header = f"""# -*- coding: utf-8 -*-
# @Time    : {current_time}
# @FileName: main.py
# @PythonVersion : {sys.version_info[:2]}
"""
    file_path = file_path if file_path.endswith(".py") else file_path + ".py"
    with open(file_path, 'w', encoding='utf-8', errors="ignore") as file:
        file.write(header)


if __name__ == '__main__':
    generate_file_header("""${NAME}""")

config.ini

  • 供用户和测试人员修改的程序配置文件
  • 前端和后端的接口文件

run.bat

  • 程序启动文件

2. 开发组开发前后的交付对象及交付内容

  • 开发前:
交付接收
需求组需求分析文件NA
开发组NA需求分析文件
测试组NANA
  • 开发完成
交付接收
需求组NA填写完成的需求分析文件,readme.md, 测试程序
开发组填写完成的需求分析文件,readme.md, 测试程序NA
测试组NA填写完成的需求分析文件, 测试程序,readme.md
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值