分层设计
项目里如果存在很多的绝对路径,项目没办法移植到别的电脑上去跑,可移植性不强,需优化项目中的路径
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']}