zoukankan      html  css  js  c++  java
  • Python读取ini配置文件(接口自动测试必备)

    前言

      大家应该接触过.ini格式的配置文件。配置文件就是把一些配置相关信息提取出去来进行单独管理,如果以后有变动只需改配置文件,无需修改代码。

      特别是后续做自动化的测试,代码和数据分享,进行管理。比如说发送邮件的邮箱配置信息、数据库连接等信息。

    今天介绍一些如何用Python读取ini配置文件。


    一、ini文件格式

    • 格式如下:

     ;这是注释

    [section]
    key1 = value1
    key2= value2
    [section] 
    key3= value3
    key4= value4
    • [section]:ini的section模块,是下面参数值的一个统称,方便好记就行
    • key = value:参数以及参数值
    • ini 文件中,使用英文分号“;”进行注释
    • section不能重复,里面数据通过section去查找,每个seletion下可以有多个key和vlaue的键值

    Py3和Py2区别

    # python3

    import configParser

    # python2

    import ConfigParser


    二、读取ini文件

    Python自带有读取配置文件的模块ConfigParser,配置文件不区分大小写。
    有一系列的方法可提供。

    • read(filename):读取文件内容
    • sections():得到所有的section,并以列表的形式返回。
    • options(section):得到该section的所有option。
    • items(section):得到该section的所有键值对。
    • get(section,option):得到section中option的值,返回string类型。
    • getint(section,option):得到section中option的值,返回int类型。

    示例:

    import os
    import configparser
    
    # 当前文件路径
    proDir = os.path.split(os.path.realpath(__file__))[0]
    # 在当前文件路径下查找.ini文件
    configPath = os.path.join(proDir, "config.ini")
    print(configPath)
    
    conf = configparser.ConfigParser()
    
    # 读取.ini文件
    conf.read(configPath)
    # get()函数读取section里的参数值
    name  = conf.get("section1","name")
    print(name)
    print(conf.sections())
    print(conf.options('section1'))
    print(conf.items('section1'))

    运行结果:

    D:Python_projectpython_learningconfig.ini
    2号
    ['section1', 'section2', 'section3', 'section_test_1']
    ['name', 'sex', 'option_plus']
    [('name', '2号'), ('sex', 'female'), ('option_plus', 'value')]

    三、修改并写入ini文件

    • write(fp):将config对象写入至某个ini格式的文件中。
    • add_section(section):添加一个新的section。
    • set(section,option,value):对section中的option进行设置,需要调用write将内容写入配置文件。
    • remove_section(section):删除某个section。
    • remove_option(section,option):删除某个section下的option

    接上部分

    # 写入配置文件 set()
    # 修改指定的section的参数值
    conf.set("section1",'name','3号')
    
    # 增加指定section的option
    conf.set("section1","option_plus","value")
    name = conf.get("section1","name")
    print(name)
    conf.write(open(configPath,'w+'))
    
    # 增加section
    conf.add_section("section_test_1")
    conf.set("section_test_1","name","test_1")
    conf.write(open(configPath,'w+'))

    如果对软件测试、接口测试、自动化测试、技术同行、持续集成、面试经验交流。感兴趣可以进到902061117,群内会有不定期的分享测试资料。
    如果文章对你有帮助,麻烦伸出发财小手点个赞,感谢您的支持,你的点赞是我持续更新的动力。

    好好学习,天天向上! 学习不刻苦,不如卖红薯!
  • 相关阅读:
    程序执行并发和并行的理解
    计算机的线程和进程的区别理解,不是编程上的进程和线程
    php单线程理解
    一句话题解(2020.12)
    PE328 Lowest-cost Search
    arc109D
    6908. 【2020.11.30提高组模拟】关灯(light)/loj#3385. 「COCI 2020.11」Svjetlo
    CF1456D. Cakes for Clones
    CF1456C. New Game Plus!
    agc025E
  • 原文地址:https://www.cnblogs.com/zzpython/p/13345142.html
Copyright © 2011-2022 走看看