接口自動(dòng)化之配置封裝

今天我纪,我們要學(xué)習(xí)的是自動(dòng)化測(cè)試中的配置類封裝券犁,使得我們能夠更方便的獲取配置數(shù)據(jù)稚新。話不多說(shuō)笤妙,進(jìn)入正題膳音。

1.conf配置文件

首先我們要知道的是兵志,在一個(gè)項(xiàng)目中醇蝴,好多地方是可以進(jìn)行動(dòng)態(tài)配置的,那么我們會(huì)將配置數(shù)據(jù)寫到統(tǒng)一的文件中想罕,在我們的python項(xiàng)目中按价,我們會(huì)將配置文件寫在以“.conf”后綴結(jié)尾的文件中框产。


如上圖膝舅,我們直接右鍵-->New-->file一個(gè)文件,創(chuàng)建出一個(gè)以.conf結(jié)尾的文件就可以了窑多。那么在配置文件中我們要怎么寫配置數(shù)據(jù)呢仍稀?,直接見(jiàn)下圖:
配置數(shù)據(jù).png

如上圖千康,我們寫配置數(shù)據(jù)享幽,要注意三個(gè)概念:
箭頭1:是我們的“模塊名”,何為模塊名呢拾弃?就是我們的一個(gè)模塊值桩,比如說(shuō),對(duì)于測(cè)試用例結(jié)果相關(guān)的配置豪椿,我們的模塊名就是"[case_result]"奔坟,對(duì)于日志模塊相關(guān)的配置,我們的模塊名就是“[logging]”,除了這些搭盾,還有很多咳秉,比如和賬號(hào)相關(guān)的,我們就可以寫一個(gè)模塊名為“[accounts]”增蹭。這里要注意的是滴某,模塊名必須用中括號(hào)“[]”括起來(lái)。
寫完模塊名滋迈,我們就可以寫模塊下相關(guān)屬性了霎奢。
箭頭2:屬性都是以“屬性名 = 值”的形式出現(xiàn),如圖所示:測(cè)試用例結(jié)果配置中饼灿,我們想配置測(cè)試用例的兩個(gè)結(jié)果幕侠,一個(gè)為正確,一個(gè)為錯(cuò)誤碍彭,這邊成功用值“Pass”表示晤硕,失敗用“Fail”表示悼潭,如果下次想用1和0表示成功或者失敗,那么可以在這邊動(dòng)態(tài)的修改值舞箍。
箭頭3:在配置文件中舰褪,我們還可以添加注釋,和python文件一樣疏橄,用#來(lái)代表注釋占拍,這里要注意的是,我們的注釋只能單獨(dú)開(kāi)一行捎迫,不能夠?qū)懺谂渲脤傩灾档暮竺婊尉疲绻麑懺谂渲脤傩灾档暮竺妫诮馕瞿弥档臅r(shí)候會(huì)報(bào)錯(cuò)窄绒!
關(guān)于配置文件贝次,我們先簡(jiǎn)單的介紹到這里。

2.ConfigParser模塊

ConfigParser是python中的configparser庫(kù)下的類彰导,我們用來(lái)處理配置文件蛔翅。我們通過(guò)ConfigParser類的實(shí)例去讀取某個(gè)配置文件,然后通過(guò)get去獲取配置的相應(yīng)值螺戳,如下:

self.config = ConfigParser()
if self.file_name is None:
     """獲取默認(rèn)路徑下的配置文件"""
     self.config.read(CONFIG_FILE_PATH, encoding="utf-8")
else:
     """獲取指定路徑下的配置文件"""
    self.config.read(self.file_name, encoding="utf-8")

如上面代碼搁宾,我們通過(guò)ConfigParser實(shí)例的read方法,傳入配置文件地址倔幼,以及編碼類型盖腿,獲取配置信息對(duì)象config。獲取到configle對(duì)象以后损同,我們通過(guò)它就可以獲取配置信息的所有數(shù)據(jù)翩腐。比如我們獲取上上面所說(shuō)的測(cè)試結(jié)果模塊的success_result值,代碼如下:

如圖膏燃,通過(guò)read方法獲取到配置文件對(duì)象后茂卦,我們可以通過(guò)get("模塊名",“屬性名”)獲取相應(yīng)配置屬性的值组哩,如果是get()方法等龙,那么獲取到的屬性值都是字符串類型,我們也可以根據(jù)不同的屬性值類型用不同的get方法伶贰。比如圖上我們獲取port屬性值用的是getInt()方法蛛砰,結(jié)果返回的就是int類型的值,如果屬性值是布爾型黍衙,我們就可以使用getboolean()方法泥畅,如果是float類型,就用getfloat()方法琅翻,依此類推位仁。

3.處理配置文件的代碼分裝

為了對(duì)配置文件進(jìn)行統(tǒng)一處理柑贞,我們進(jìn)行一個(gè)封裝,因?yàn)楸旧硖幚砼渲梦募牟僮饕脖容^簡(jiǎn)單聂抢,所以封裝起來(lái)也比較簡(jiǎn)單钧嘶,有需要的可以借鑒,代碼如下:

from configparser import ConfigParser
from scripts.constant_url import CONFIG_FILE_PATH


class ConfigLoader:
    def __init__(self, file_name=None):
        self.file_name = file_name
        self.config = ConfigParser()
        if self.file_name is None:
            """獲取默認(rèn)路徑下的配置文件"""
            self.config.read(CONFIG_FILE_PATH, encoding="utf-8")
        else:
            """獲取指定路徑下的配置文件"""
            self.config.read(self.file_name, encoding="utf-8")

    def get_value(self, section, option):
        # 通過(guò)section涛浙,option 來(lái)取到配置項(xiàng)的值
        return self.config.get(section, option)

    def get_boolean(self, section, option):
        return self.config.getboolean(section, option)

    def get_int(self, section, option):
        return self.config.getint(section, option)

    def get_float(self, section, option):
        return self.config.getfloat(section, option)

    def get_eval_data(self, section, option):
        """
        獲取列表形式的配置值
        :param section:
        :param option:
        :return:
        """
        return eval(self.get_value(section, option))

    @staticmethod
    def write_config_data(config_data, file_name):
        """
        保存?zhèn)魅氲膬?nèi)容為字典的列表類型的配置數(shù)據(jù)
        :param config_data: 容為字典的列表類型的配置數(shù)據(jù)
        :param file_name: 文件名
        """
        config = ConfigParser()
        for key in config_data:
            config[key] = config_data[key]
        with open(file_name, "w") as file:
            config.write(file)

總結(jié)

由于對(duì)于配置文件的操作比較簡(jiǎn)單康辑,在這里不多進(jìn)行闡述。打完收工=瘟痢!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末胸墙,一起剝皮案震驚了整個(gè)濱河市我注,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌迟隅,老刑警劉巖但骨,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異智袭,居然都是意外死亡奔缠,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門吼野,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)校哎,“玉大人,你說(shuō)我怎么就攤上這事瞳步∶贫撸” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵单起,是天一觀的道長(zhǎng)抱怔。 經(jīng)常有香客問(wèn)我,道長(zhǎng)嘀倒,這世上最難降的妖魔是什么屈留? 我笑而不...
    開(kāi)封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮测蘑,結(jié)果婚禮上灌危,老公的妹妹穿的比我還像新娘。我一直安慰自己帮寻,他們只是感情好乍狐,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著固逗,像睡著了一般浅蚪。 火紅的嫁衣襯著肌膚如雪藕帜。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天惜傲,我揣著相機(jī)與錄音洽故,去河邊找鬼。 笑死盗誊,一個(gè)胖子當(dāng)著我的面吹牛时甚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播哈踱,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼荒适,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了开镣?” 一聲冷哼從身側(cè)響起刀诬,我...
    開(kāi)封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎邪财,沒(méi)想到半個(gè)月后陕壹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡树埠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年糠馆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怎憋。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡又碌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盛霎,到底是詐尸還是另有隱情赠橙,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布愤炸,位于F島的核電站期揪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏规个。R本人自食惡果不足惜凤薛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望诞仓。 院中可真熱鬧缤苫,春花似錦、人聲如沸墅拭。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至舒憾,卻和暖如春镀钓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背镀迂。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工丁溅, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人探遵。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓窟赏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親箱季。 傳聞我的和親對(duì)象是個(gè)殘疾皇子涯穷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容