在自動化測試過程中,為了提高腳本的可讀性和降低維護成本,將一些通用信息寫入配置文件,將重復使用的方法寫成公共模塊進行封裝,使用時候直接調用即可。
這篇博客,介紹下python中利用configparser模塊讀寫配置文件的方法,僅供參考。。。
一、讀取文件
configparser模塊支持讀取.conf和.ini等類型的文件,那么首先在文件夾新建一個.ini文件,寫入一些信息,如下圖:
示例代碼如下:
1 # coding=utf-8
2 import configparser 3 import os 4
5 os.chdir("E:\\Automation\\UI\\testcase") 6 cf = configparser.ConfigParser() 7
8 # read(filename) 讀文件內容
9 filename = cf.read("test.ini") 10 print(filename) 11
12 # sections() 得到所有的section,以列表形式返回
13 sec = cf.sections() 14 print(sec) 15
16 # options(section) 得到section下的所有option
17 opt = cf.options("mysql") 18 print(opt) 19
20 # items 得到section的所有鍵值對
21 value = cf.items("driver") 22 print(value) 23
24 # get(section,option) 得到section中的option值,返回string/int類型的結果
25 mysql_host = cf.get("mysql","host") 26 mysql_password = cf.getint("mysql","password") 27 print(mysql_host,mysql_password)
執行腳本,結果如下所示:
1 ['test.ini'] 2 ['driver', 'mysql'] 3 ['host', 'port', 'username', 'password'] 4 [('path', 'E:\\Automation\\UI\\testcase\\browser\\chromedriver.exe'), ('url', 'https://www.baidu.com/')] 5 127.0.0.1 123456
腳本解析:
cf.read(filename):讀取文件內容
cf.sections():得到所有的section,並且以列表形式返回
cf.options(section):得到section下所有的option
cf.items(option):得到該section所有的鍵值對
cf.get(section,option):得到section中option的值,返回string類型的結果
cf.getint(section,option):得到section中option的值,返回int類型的結果
二、寫入文件
如果需要在配置文件寫入內容,需要os函數幫忙,示例代碼如下:
1 # coding=utf-8
2 import configparser 3 import os 4
5 os.chdir("E:\\Automation\\UI\\testcase") 6 cf = configparser.ConfigParser() 7
8 # 往配置文件寫入內容
9
10 # add section 添加section項
11 # set(section,option,value) 給section項中寫入鍵值對
12 cf.add_section("mq") 13 cf.set("mq", "user", "laozhang") 14 cf.add_section("kafka") 15 cf.set("kafka", "user", "xiaozhang") 16
17 # write to file
18 with open("test1.ini","w+") as f: 19 cf.write(f)
執行腳本,結果如下所示:
腳本解析:
cf.write(filename):將configparser對象寫入.ini類型的文件
add_section():添加一個新的section
add_set(section,option,value):對section中的option信息進行寫入
三、修改文件
還可以利用os函數對文件進行修改,示例代碼如下:
1 # coding=utf-8
2 import configparser 3 import os 4
5 os.chdir("E:\\Automation\\UI\\testcase") 6 cf = configparser.ConfigParser() 7
8 # 修改配置文件的內容
9
10 # remove_section(section) 刪除某個section的數值
11 # remove_option(section,option) 刪除某個section下的option的數值
12 cf.read("test1.ini")
13 cf.remove_option("kafka","user") 14 cf.remove_section("mq") 15
16 # write to file
17 with open("test1.ini","w+") as f: 18 cf.write(f)
執行腳本,結果如下所示:
腳本解析:
cf.read(filename):讀取文件(這里需要注意的是:一定要先讀取文件,再進行修改)
cf.remove_section(section):刪除文件中的某個section的數值
cf.remove_option(section,option):刪除文件中某個section下的option的數值
如上所示,就是configparser模塊讀寫配置文件的方法,代碼僅為參考,具體使用請自行實踐。。。