当前位置: 首页 > news >正文

基于Python的接口自动化-读写配置文件

目录

引言

configparser模块功能介绍


引言

        在编写接口自动化测试脚本时,有时我们需要在代码中定义变量并给变量固定的赋值。为了统一管理和操作这些固定的变量,咱们一般会将这些固定的变量以一定规则配置到指定的配置文件中,后续需要用到这些变量和变量值时通过代码读取或者写入数据到该配置文件即可,使用配置文件的好处就是不用在程序中写死,可以使程序更灵活。因而对于python语言就封装了configparser模块,用来处理指定格式的文件(文件名称一般为xxx.ini),配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section), 每个节可以有多个参数(键=值)。

        注:目前python3版本操作配置文件模块名称变更为configparser,原有的python2版本配置文件模块名称变更为ConfigParser

configparser模块功能介绍

 configparser模块主要封装提供了ConfigParser()类、RawConfigParser()类、SafeConfigParser()类等,如下图导入configparser模块,可以查看并使用模块下已经封装好的所有类

在configparser模块中主要还是使用封装的ConfigParser()类提供的方法来操作配置文件,对配置文件进行数据读取和写入等。

具体的该模块python官网对其有完整的介绍:configparser — Configuration file parser — Python 3.11.4 documentation

配置文件的格式如下:

  • 中括号“[ ]”内包含的为section。
  • section 下面为类似于key-value 的配置内容,一般是用赋值符“=”分隔。

      示例:

 读取配置文件及其常用读取指定数据方法

 ConfigParser()类提供了操作读取配置文件、读取指定配置文件中section、section下的所有key-value等方法,具体方法使用如下:

 代码示例:

  运行以上代码输出如下:

  写入配置文件(增删改操作)及其提供的操作方法

 ConfigParser()类提供了写入修改配置文件数据等方法,具体方法使用如下:

 在配置文件编辑如下信息:

 编辑如下代码:

import configparserconf = configparser.ConfigParser()conf.read(r'G:\api_test\configfile.ini',encoding='utf-8')conf.set("code", "code", "6666")  # 修改指定section 的optionconf.set("code", "age", "123")  # 增加指定section 的optionconf.has_section("code")conf.has_option("code","age")#conf.remove_section("test")#conf.remove_option("test","haha")if 'test' not in conf.sections():conf.add_section("test")  # 增加sectionconf.set("test", "haha", "123")  # 给新增的section 写入optionfile = open(r'G:\api_test\configfile.ini', 'w',encoding='utf-8')conf.write(file)file.close()

运行结束后如下:

 编辑修改配置文件记得关闭配置文件。

通过以上使用ConfigParser()类提供读写配置文件的相关方法,就可以比较方便的操作配置文件。but,以上向配置文件读取和写入数据到配置文件的代码,并没有进行封装。由于经常需要使用配置文件进行数据读取和写入,因此建议将操作配置文件读写的操作封装成公共的模块。如操作读取配置文件的数据的封装,配置文件内容如下:

新建read_config.py文件,封装的读取配置文件的代码,实例如下:

import configparserimport osclass ReadConfig():def __init__(self, filepath=None):root_dir = os.path.dirname(os.path.abspath('.'))        # 获取项目主路径# print("打印",root_dir)configpath = os.path.join(root_dir, "configfile.ini")  # 拼接路径# print("得到的路径为",configpath)self.cf = configparser.RawConfigParser()self.cf.read(configpath,encoding='utf-8')def get_cookie(self, param):value = self.cf.get("cookie", param)return valuedef get_sheet(self,param):value = self.cf.get("sheet",param)return valuedef get_mysql(self,param):value = self.cf.get("mysql",param)return valuedef get_code(self,param):value = self.cf.get("code",param)return value

 这样封装成类后,后续其他模块需要读取配置文件数据,就可以不用重复写读取配置文件的代码,直接引入该封装的类,并实例化对象调用类里面封装的方法即可。


最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

在我的QQ技术交流群里(技术交流和资源共享,广告勿扰)

http://www.lryc.cn/news/93028.html

相关文章:

  • useEffect的基础知识和底层机制
  • chatgpt赋能python:Python中如何加空格
  • 软件测试之路已不再是坦途
  • 扫雷——C语言实现
  • CSS基础学习--6 CSS Text(文本)
  • 高精度电压源的应用场合有哪些
  • Android约束布局
  • selenium基础语法
  • 运行后端SpringBoot项目
  • #如何对待工作中的失误?# 如何对待工作与生活中的失误——一些不成熟的忠告
  • Shell脚本文本三剑客之awk编辑器
  • Focal Loss介绍
  • 【数据结构与算法】04 哈希表 / 散列表 (哈希函数、哈希冲突、链地址法、开放地址法、SHA256)
  • 每日一道面试题之介绍一下Java的序列化和反序列化!
  • Netty实战(十一)
  • Qos服务质量、心跳机制、保留消息,遗嘱信息,用户密码认证
  • MATLAB 之 线性方程组求解
  • 华为OD机试真题 Java 实现【字符串序列判定】【2022Q4 100分】,附详细解题思路
  • taro使用小记 —— 持续更新
  • 【LeetCode】110. 平衡二叉树
  • SQL视图、存储过程、触发器
  • DNS隧道穿透
  • 1.2 Scala变量与数据类型
  • 深入探讨软件测试的质量度量指标
  • 6.12作业
  • RabbitMQ集群部署之镜像模式
  • 【算法】Remove Zero Sum Consecutive Nodes from Linked List 从链表中删去总和值为零的连续节点
  • 音悦台项目测试报告
  • 数据库存储过程和函数
  • Spring依赖注入有哪些?各有什么优缺点?