【轉(zhuǎn)載】接口測試學(xué)習(xí)-yaml格式的測試用例

測試接口需要的數(shù)據(jù)是存儲在excel文檔中的扣溺,讀取比較麻煩战秋。下面是讀取excel文檔并獲取到接口測試必須數(shù)據(jù)和驗證結(jié)果數(shù)據(jù)的代碼。首先我們需要創(chuàng)建一個空的list來存放讀取到的數(shù)據(jù)夺欲,然后打開excel文檔媒至,從第二行開始讀取用例內(nèi)容(第一行是標(biāo)題),獲取到每行內(nèi)容后季二,只保留接口測試需要的數(shù)據(jù)(原來的excel文檔中第四列到第七列分別存放了url檩咱,請求方式,請求參數(shù)胯舷,預(yù)期結(jié)果)刻蚯,然后將這部分?jǐn)?shù)據(jù)存入空的list中。這樣cases就是一個二維數(shù)據(jù)桑嘶,這個list中包含了excel中每一行的用例數(shù)據(jù)炊汹,每個用例數(shù)據(jù)里面包含了四個元素。類似于[[url1,method1,req_data1,check1],[url2,method2,req_data2,check2]]逃顶。代碼中的apt_log是實例化的日志記錄類讨便。但是讀取后,在使用這些元素進行接口測試時口蝠,還需要再次轉(zhuǎn)換器钟,因為request模塊接口測試中的data是字典格式的。此處是list格式妙蔗,屆時還需要轉(zhuǎn)換傲霸。

def get_case(self, file_path):
      cases = []  # 存放所有的測試用例
      if file_path.endswith('.xls') or file_path.endswith('.xlsx'):  # 判斷路徑是否存在
          try:
              book = xlrd.open_workbook(file_path)
              sheet = book.sheet_by_index(0)  # 打開用例文件
              for i in range(1, sheet.nrows):  # 從第二行開始遍歷excel文件內(nèi)容(第一行是標(biāo)題)
                  row_data = sheet.row_values(i)  # 獲取每行內(nèi)容
                  cases.append(row_data[4:8])  # 在cases這個list中存每個用例的url,method,req_data,check
              apt_log.info('共讀取%s條用例' % (len(cases)))  # 檢查cases中的元素個數(shù),日志記錄讀取了幾條用例
              self.file_path = file_path  # 既然讀取成功說明這個文件路徑是正確的,那么這邊定義下面寫exccel就可以直接使用了
          except Exception as e:
              apt_log.error('【%s】用例打開失敗昙啄,錯誤信息:%s' % (file_path, e))
      else:
          apt_log.error('用例文件不合法穆役,%s' % file_path)
      return cases

可以看到讀取excel步驟比較繁瑣,需要各種格式轉(zhuǎn)化梳凛。但是yaml格式的文件簡化了讀取用例的步驟耿币,讀取這個格式的文件會自動設(shè)置為字典模式。而且只要在yaml格式的文件中錄入數(shù)據(jù)時遵循了文件固定的格式韧拒,也可以自動讀取出雙層字典淹接,有多個用例時可以產(chǎn)生一個list包裹所有的字典格式的用例數(shù)據(jù)。如果不添加符號"-"叛溢,讀取時文件中的所有數(shù)據(jù)都會轉(zhuǎn)為字典格式塑悼,而添加后,文件數(shù)據(jù)讀取為list格式楷掉,但符號內(nèi)換行鎖緊記錄的數(shù)據(jù)是字典格式厢蒜。但是check數(shù)據(jù)中,直接在符號"-"后添加數(shù)據(jù)烹植,這部分?jǐn)?shù)據(jù)會讀取為list格式斑鸦。

-  # 添加減號可以把用例轉(zhuǎn)為list,每一部分是一個字典
  url: /api/user/login
  detail: 正常登陸
  method: post
  data:  # 存放多層嵌套字典的方式
    username: *********
    passwd: *******
#  headers:
#    User-agent: Firefox
#  cookies:
#    sign: adfdsfnsdfnsd
  check:  # 這樣定義check可以用in來判斷測試是否通過
    - sign
    - userId
 
-
  url: /api/user/login
  detail: 密碼錯誤
  method: post
  data:
    username: *********
    passwd: *********
  check:
    - 密碼錯誤
 
-
  url: /api/user/login
  detail: 必填參數(shù)未填草雕,不填密碼
  method: post
  data:
    username: *********
  check:
    - 必填參數(shù)未填

然后讀取yaml格式的文件巷屿,就像一般文件讀取一樣操作就可以了。

1 import yaml
2 
3 
4 f = open('login.yaml',encoding='utf-8')
5 res = yaml.load(f)
6 print(res)

讀取到的數(shù)據(jù)格式如下促绵,可以看到一個list中包含了三個元素攒庵,每個元素都是字典格式的,這樣讀取數(shù)據(jù)就很方便了败晴。

1 [{'url': '/api/user/login', 'check': ['sign', 'userId'], 'method': 'post', 'data': {'username': '*********', 'passwd': '*********'}, 'detail': '正常登陸'}, 
2 {'url': '/api/user/login', 'check': ['密碼錯誤'], 'method': 'post', 'data': {'username': '*********', 'passwd': '*********'}, 'detail': '密碼錯誤'}, 
3 {'url': '/api/user/login', 'check': ['必填參數(shù)未填'], 'method': 'post', 'data': {'username': '*********'}, 'detail': '必填參數(shù)未填,不填密碼'}]
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末栽渴,一起剝皮案震驚了整個濱河市尖坤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闲擦,老刑警劉巖慢味,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異墅冷,居然都是意外死亡纯路,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門寞忿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驰唬,“玉大人,你說我怎么就攤上這事〗斜啵” “怎么了辖佣?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長搓逾。 經(jīng)常有香客問我卷谈,道長,這世上最難降的妖魔是什么霞篡? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任世蔗,我火速辦了婚禮,結(jié)果婚禮上朗兵,老公的妹妹穿的比我還像新娘污淋。我一直安慰自己,他們只是感情好矛市,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布芙沥。 她就那樣靜靜地躺著,像睡著了一般浊吏。 火紅的嫁衣襯著肌膚如雪而昨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天找田,我揣著相機與錄音歌憨,去河邊找鬼。 笑死墩衙,一個胖子當(dāng)著我的面吹牛务嫡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播漆改,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼心铃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了挫剑?” 一聲冷哼從身側(cè)響起去扣,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎樊破,沒想到半個月后愉棱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡哲戚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年奔滑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片顺少。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡朋其,死狀恐怖王浴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情令宿,我是刑警寧澤叼耙,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站粒没,受9級特大地震影響筛婉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜癞松,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一爽撒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧响蓉,春花似錦硕勿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至想幻,卻和暖如春粱栖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背脏毯。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工闹究, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人食店。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓渣淤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吉嫩。 傳聞我的和親對象是個殘疾皇子价认,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348