1. 程式人生 > >python3+requests庫框架設計04-配置檔案

python3+requests庫框架設計04-配置檔案

python3配置檔案的增刪改查等操作可以使用內建的ConfigParser模組,可以自行百度學習,也可以看 Python3學習筆記27-ConfigParser模組

配置檔案一般存放著環境資訊,比如url和一些測試過程中後續需要用到的欄位。還有測試中需要匯入,匯出的一些檔案。在專案下新建Config資料夾,資料夾下新建config.ini檔案。專案結構如下

實際專案介面測試中,介面url前面很大一部分都是相同的,只有後面一小部分是不同的,那可以把相同部分放在配置檔案中,這樣就可以通過配置檔案去控制,想要測試 測試環境 還是 生產環境。

那我們就需要對配置檔案的增刪改查進行封裝

在Common資料夾下,對Base_test.py檔案新增全域性變數

path = getcwd.get_cwd()
config_path = os.path.join(path, 'Config/config.ini')

上面程式碼是為了提供配置檔案的路徑,接下來是封裝配置的檔案的增刪改查

    def config_get(self,section,key,url=None):
        '''讀取配置檔案欄位的值並返回'''
        config = configparser.ConfigParser()
        config.read(config_path,encoding="utf-8-sig")
        if key =='url':
            config_url = config.get(section,key)
            url = config_url+url
            log1.info("請求的url:%s" % url)
            return url
        else:
            config_get = config.get(section,key)
            return  config_get


    def config_write(self,section,key = None,value = None):
        '''往配置檔案寫入鍵值'''
        config = configparser.ConfigParser()
        config.read(config_path,encoding="utf-8-sig")
        if key is not None and value is not None:
            config.set(section,key,value)
            with open(config_path,'w',encoding='utf-8')as f :
                config.write(f)
        else:
            config.add_section(section)
            with open(config_path,'w',encoding='utf-8')as f :
                config.write(f)


    def config_delete(self,section,key = None):
        '''刪除配置檔案欄位'''
        config = configparser.ConfigParser()
        config.read(config_path,encoding="utf-8-sig")
        if key is not None :
            config.remove_option(section,key)
            with open(config_path,'w',encoding='utf-8')as f :
                config.write(f)
        else:
            config.remove_section(section)
            with open(config_path,'w',encoding='utf-8')as f :
                config.write(f)

並沒有加日誌,有需要的可以自己加,中間encoding都是防止對配置檔案進行中文的操作,不加這些會報錯的。那接下來測試一下看看

from Common.Base_test import webrequests
from Logs.log import log1

section = 'login'
username = '測試'
password = '一下'

s = webrequests()

s.config_write(section)
log1.info("寫入section:%s" % section)
s.config_write(section,'username',username)
log1.info("寫入%s下的使用者名稱是:%s" %(section,username))
s.config_write(section,'password',password)
log1.info("寫入%s下的密碼是:%s" %(section,password))

url = s.config_get('test','url',url='test/test1')
get_username = s.config_get(section,'username')
log1.info("讀取的使用者名稱:%s" % get_username)
get_password = s.config_get(section,'password')
log1.info("讀取的密碼:%s" % get_password)

s.config_delete(section,'usrename',)
log1.info("刪除%s下的username" % section)
s.config_delete(section,'password')
log1.info("刪除%s下的password" % section)
s.config_delete(section)
log1.info("刪除%s" % section)

可以先寫,再讀,最後刪除,把操作分開,看控制檯輸出和配置檔案中的變化會更加直觀。我這裡懶得一步步截圖了