• Python 一招检测配置文件是否变更


    欢迎关注【无量测试之道】公众号,回复【领取资源】,
    Python编程学习资源干货、
    Python+Appium框架APP的UI自动化、
    Python+Selenium框架Web的UI自动化、
    Python+Unittest框架API自动化、

    资源和代码 免费送啦~
    文章下方有公众号二维码,可直接微信扫一扫关注即可。

    当项目非常多时随之而来的配置文件也会变得非常多,而且越发的复杂,有时候上线后才知道线上环境的配置文件不对,那么我们如何提前来检测到配置文件有改动了,本文将给你提供一个可以检测的手段。代码如下所示:

    1、导入包并指定目录

    1 import hashlib
    2 import os
    3 from qqAnalyse.conndb import  conndb
    4  
    5 #定义要处理md5值的目录
    6 path="D:\tool\elasticsearch-head-master\elasticsearch-head-master"

    2、初始化配置文件的md5值并入库

    1 #初始化配置文件的md5值并入库
    2 def init_md5():
    3     filelist = []
    4     filelist = get_file(path, filelist)
    5     for i in range(len(filelist)):
    6         md5v=get_md5_file(filelist[i])
    7         insert_sql="INSERT INTO mdFiveFile (filename,filemd) VALUES ('"+filelist[i]+"','"+str(md5v)+"');"
    8         db = conndb()
    9         db.execute_sql(insert_sql)

    3、检测新配置文件的md5值是否变化

     1 #检查新的配置文件md5值是否有改变,有改变则打印出来
     2 def check_md5():
     3     filelist = []
     4     filelist = get_file(path, filelist)
     5     for i in range(len(filelist)):
     6         md5v = get_md5_file(filelist[i])
     7         selectsql = "select filemd from mdFiveFile where filename='" + filelist[i] + "';"
     8         # print(selectsql)
     9         db = conndb()
    10         md5=db.select_sql(selectsql)[0]
    11         if(md5!=md5v):
    12             print(str(filelist[i])+"--- please check the file,maybe it's update")
    13         else:
    14             print("the check is ok")

    4、文件进行md5加密处理

    1  
    2 #针对传入的文件计算md5的值
    3 def get_md5_file(file_name):
    4     with open(file_name, 'rb') as fp:
    5         data = fp.read()
    6         # print(data)
    7     file_md5= hashlib.md5(data).hexdigest()
    8     return file_md5

    5、遍历指定目录下文件

     1 #遍历上面指定目录下的所有文件
     2 def get_file(path,filelist):
     3     file_list = os.listdir(path)# 首先遍历当前目录所有文件及文件夹
     4     # print(file_list)
     5     for file in file_list:
     6         cur_path = os.path.join(path, file)# 利用os.path.join()方法取得路径全名,并存入cur_path变量,否则每次只能遍历一层目录
     7         if os.path.isdir(cur_path):
     8             get_file(cur_path,filelist)
     9         else:
    10             if(str(file).endswith("bak")):
    11                 filelist.append(cur_path)
    12     return filelist

    6、代码运行入口

    1 if __name__ == '__main__':
    2     # init_md5()
    3     check_md5()

    总结:我们首先要确定我们要检测的配置文件,然后将它的当前的md5值进行初始化到数据库,当下次发布前我们可以针对性的进行一次检测,发现有变更就会提示出来,这样就可以做到提前知晓变更的配置文件,再人工介入进行重点检查。

    备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

     添加关注,让我们一起共同成长!

  • 相关阅读:
    C++ 简单实现shared_ptr
    C++设计模式 工厂方法(Factory Method)
    C++简单实现unique_ptr
    C++ atomic
    C++设计模式 单例模式(Singleton)
    stream 分组(group)和map的值映射mapping变型写法
    springboot集成mbatisplus+shardingjdbc+水平分表
    springboot集成mbatisplus+shardingjdbc+水平分库
    基准测试JMH的demo
    流快速收集指定keyvalue的map集合
  • 原文地址:https://www.cnblogs.com/Wu13241454771/p/13573648.html
Copyright © 2020-2023  润新知