栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

成长之路--从0开始学python(18)--配置文件和log

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

成长之路--从0开始学python(18)--配置文件和log

配置文件

什么是配置文件?

每个程序都有配置文件 在用户的角度来看就是设置,比如QQ的设置,可以设置声音大小,是否开机启动等,手机的设置,有打开热点 连接wifi,亮度等.在开发者的角度来说,这些设置都是写在一个配置文件中,用户改变设置,就等于改变了配置文件里的内容,让程序运行的环境改变

作用:把程序需要的参数或者设置数据保存到文件当中  

        参数,数据主要就是程序运行的依赖(环境)数据,没有这些参数程序可能无法运行

        参数实际上是提供软件运行的环境,是程序运行的常量

变量/常量:

变量:根据程序的运行,可能时刻会变化

常量:通常不会变化.当你想改变程序的运行环境时候才会变化,往往是通过手工修改

例:数据库地址,域名,测试账号,excel文件名

好处:对于想改变程序的运行,只需要修改配置文件,不需要再修改代码 --无代码化

配置文件的操作

yaml

目前最推荐的配置文件格式,优秀的配置文件标准几乎都有

格式: 键: 值 字典的表示形式, 和python不同的是,键可以不用加引号,冒号后面一定要空格

表示字符串时建议加引号,减少bug

username: "conlin"
password: 123456
database: "192.168.0.103"

表示字典

#字典
info: {"hobby":"game","age":18}
#字典的其他方式
info1:
  hobby: "game"
  age: 18

表示列表

#列表
hobby: [1,2,3]
#列表的其他方式
hobby1:
  - 1
  - 2
  - 3

读取yml文件

1.安装pyyaml 导入yaml

import yaml

2.用读取文件的方式读取,用一个变量f接收

with open("demo1.yml",encoding="utf-8") as f:
    data = yaml.safe_load(f) #安全加载,是一个字典

3.用safe_load()方法获得yml文件的全部元素

data = yaml.safe_load(f)

自动化测试可以使用yml文件保存设置选项,也可以用yml保存测试用例数据

yml不是一门编程语言,没有像if for这样的逻辑,和python语法相似,只是数据都是以key: value形式表示

ini

比较适合配置项的数据类型只是简单的字符串、数字的情况,如果设置数组和key/value的嵌套,会比较吃力

[]代表section,用来对配置项进行分组,下面的叫option,如果要获取某个option,先要获取section

[default]
#中括号表示区域
host=http://www.yuz.com

[db]
host=""
port=3306
name="py"

 

通过python解析ini

要获取里面的值,首先要获取区域

只能一个一个获取,不能全部一起获取

from configparser import ConfigParser

parser = ConfigParser() #从类获取实例
parser.read("demo2.ini",encoding="utf-8")


#查找host的值,需要先获取section
host = parser.get("default","host")
print(host)
db_host = parser.get("db","host")
print(db_host)

 缺点ini只支持字符串

还有很多配置文件的格式 不需要一一去学习

Log 日志

程序运行过程中产生的信息,程序如何运行的信息

  1. 包含日期,等级(),日志信息(msg),作用跟print相近
  2. 日志既可以在终端中显示,也可以直接保存到文件当中

作用:可以查看出现错误的代码,方便定位,记录

日志等级:

-NOSET 0 ,无关主要的内容

-debug 10,调式,额外信息,备注,和主题功能无关.日志里的备注

-info 20,主体功能的信息.相当于程序做了什么内容

-warning 30,警告,下次可能会出错

-error 40,出错

-critical 50,极其严重的错误,影响系统

Python记录日志

安装loguru,从loguru导入logger

from loguru import logger

生成一个info级别的日志

logger.info("这是一个正常的日志,表明程序在运行")

生成一个警告级别的日志

logger.warning("警告信息")

生成一个出错级别的日志

logger.error("产生错误")

得到日志信息

 提示在代码第几行产生日志

在项目中写入log,并且生成日志文件

-日志写在哪里?

info级别的日志可以写在调用方法之前,还有断言之后

  def test_login_01(self):
        username = ""
        password = ""
        expected = {"code":'400','msg':"用户名或密码为空"}
        logger.info("正在执行测试用例1...")
        actual = login(username,password)
        try:
            self.assertEqual(expected,actual)
        except AssertionError as e:
            logger.error("测试用例1断言失败")
            raise e   #手工抛出异常,不然用例会被通过
        logger.info("测试用例1执行完毕")

    def test_login_02(self):
        username = 'berry'
        password = "123"
        expected = {'code':'300','msg':'用户名或密码错误'}
        logger.info("正在执行测试用例2...")
        actual = login(username,password)
        self.assertEqual(expected,actual)
        logger.info("测试用例2执行完毕")

error级别的日志,作用在执行代码时候可能会发生错误的时候,用try...except...

    def test_login_01(self):
        username = ""
        password = ""
        expected = {"code":'400','msg':"用户名或密码为空"}
        logger.info("正在执行测试用例1...")
        actual = login(username,password)
        try:
            self.assertEqual(expected,actual)
        except AssertionError as e:
            logger.error("测试用例1断言失败")
            raise e   #手工抛出异常,不然用例会被通过
        logger.info("测试用例1执行完毕")

断言失败的时候,会抛出错误,要想在抛出错误时记录错误,就要捕获错误,捕获的信息就是日志信息,但是还要记得手工抛出异常(raise),不然用例会被通过

日志保存到日志文件里

在类的前面添加logger.add()方法

logger.add(sink="demo.log",encoding="utf-8",level="ERROR",rotation="100 MB")

sink表示记录到哪个日志文件中

level表示只显示哪种级别以上的日志

rotation表示日志文件多长时间,超过多大容量的时候会自动新增新的日志文件

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/320070.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号