分层设计思想、绝对路径优化及添加配置文件

分层设计



项目里如果存在很多的绝对路径,项目没办法移植到别的电脑上去跑,可移植性不强,需优化项目中的路径

import os

# 项目根目录
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# 测试用例目录路径
CASE_DIR = os.path.join(BASE_DIR, 'testcases')

# 测试报告目录路径
REPORT_DIR = os.path.join(BASE_DIR, 'reports')

# 日志目录路径
LOG_DIR = os.path.join(BASE_DIR, 'logs')

# 测试数据excel目录路径
DATA_DIR = os.path.join(BASE_DIR, 'data_excel')

# 配置文件目录路径
CONF_DIR = os.path.join(BASE_DIR,'conf')


配置文件  用于配置计算机程序的参数和初始化设置的文件。
项目中的参数固定,无配置文件,项目的可配置性不强,需添加配置文件(配置文件常见格式:ini, conf, cfg)
配置文件起到无代码化修改的作用,当项目环境发生变化在配置文件内修改即可,无需修改代码
配置文件插件安装,只是优化显示,不装也可以

# 在配置文件内使用 # 和 ; 都可以添加注释
# 通过一些会经常更改的参数放进配置文件内
# 使用get方法获取的都是字符串类型数据
# 日志的相关配置
[logging]  # 配置块 section
log_name = jiuba.log  # 配置项 option
log_type = 1
level = DEBUG
fh_level = DEBUG
sh_level = DEBUG

; 报告的相关配置
[report]
filename = babadereport
'''
configparser  python内置的配置文件解析模块,支持ini,conf,cfg格式
'''
from configparser import ConfigParser

# 第一步,创建一个配置文件解析器对象
cfg = ConfigParser()
# 第二步,读取配置文件
cfg.read(r'D:\0423\py40_0526\conf\config.ini', encoding='utf8')  # 和配置文件在同一目录下直接写配置文件名字即可,否则需要完整路径

# 读取配置文件中的内容
# get(section,option),该方法读取出来的内容都是字符串类型
# getint(section,option),该方法读取出来的内容是int,只能读取是整数的内容,否则报错
# getfloat(section,option),该方法读取出来的内容是float,只能读取是数字(包括整数)的内容,否则报错
# getboolean(section,option),该方法读取出来的内容是布尔值,只能读取True和False(不区分大小写),否则报错
res = cfg.get('logging','level')
print(res)
res1 = cfg.getboolean('logging','l')
print(res1)

# 配置文件的写入,基本不用,一般都直接在配置文件写入修改
# 同样需要前面2步
# 设置配置项的内容
cfg.set('logging','ll','0000')  # 内部逻辑为,先把配置文件内容读取出来,设置要写入的内容,使用w模式覆盖写入
with open(r'D:\0423\py40_0526\conf\config.ini','w',encoding='utf8') as f:
    cfg.write(f)

YAML  
插件YAML安装,第三方库安装 pip install pyyaml

# 类似以键值对的形式存在,key 通常不需要加引号,value 如果是字符串,建议加引号,: 后面必须加空格
# 用例文件名
filename: 'testcases'

# 服务器相关配置
service_info:
  host: 127.0.0.2
  port: 80  # 等同于 service_info: {'host': '127.0.0.2', 'port': 80}

# 数据库相关配置
mysql:
  ip: 127.0.0.1
  port: 3306
  sql_name: 'mysql'
  username: 'root'
  password: '123456'

# 列表类型
users:
  - 'erlin'
  - 'erhan'
  - 'erfang'  # 等同于 users: ['erlin', 'erhan', 'erfang']
# yaml读取
import yaml


def handle_yaml(yaml_add):
    with open(yaml_add, encoding='utf8') as f:
        return yaml.safe_load(f)



print(handle_yaml(r'D:\0423\pycharm\py40_0424\py0601\myyaml.yaml'))  # 读取出来是字典类型的数据
# {'filename': 'testcases', 'service_info': {'host': '127.0.0.2', 'port': 80}, 
#  'mysql': {'ip': '127.0.0.1', 'port': 3306, 'sql_name': 'mysql', 'username': 'root', 'password': '123456'}, 
#  'users': ['erlin', 'erhan', 'erfang']}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值