接口自動化實現用例可配置


首先說下為什么要做用例可配置,有時候跑測試用例,並不需要全部都運行一遍,只需要運行部分用例就行了。這個時候就需要你在設計用例的時候,做到用例可配置化。說白點就是可以選擇執行部分用例,或者默認運行全部測試用例。

假設我有測試數據如下,里面有cese_id,method,url,data,headers,expected:

現在我要根據case_id來判斷只運行2條測試用例,或者1條用例。怎么做呢?

首先創建一個以.config結尾的配置文件,內容如下圖所示:

不要問我為啥這么寫,這是配置文件的固定格式。

接下來寫一個讀取配置文件的方法:配置文件要和讀取配置文件的方法放在一起,否則會報文件找不到的錯誤

讀取結果如圖所示:

代碼如下:

import configparser


class ReadConfig():
'''讀取配置文件,需要傳遞3個參數,配置文件路徑,section,option'''
def read_config(self,file_path,section,option):
cf = configparser.ConfigParser()
cf.read(file_path,encoding='utf-8')
return cf.get(section,option)

if __name__ == '__main__':
print(ReadConfig().read_config(r'D:\File\yoyo_api\conf\host.config','MODE','mode'))

如圖:配置文件的section,option

最后在返回數據前面加上判斷:判斷mode如果等於all,就執行全部用例。如果mode等於列表,就判斷傳入列表是否在case_id中,最后在執行要執行的用例。

執行結果如下圖所示,只運行了第一條和第三條用例:

 

代碼如下:

from openpyxl import load_workbook
from API_AUTO.tools.read_conf import ReadConfig


class ReadExcel():
    def get_data(self, file_path, sheet_name):
        '''獲取數據'''
        # 從配置文件讀取值
        mode = ReadConfig().read_config('case.config', 'MODE', 'mode')
        wb = load_workbook(file_path)
        sheet = wb[sheet_name]
        test_data = []
        for i in range(2, sheet.max_row + 1):
            row_data = {}
            row_data['case_id'] = sheet.cell(i, 1).value
            row_data['method'] = sheet.cell(i, 2).value
            row_data['login_url'] = sheet.cell(i, 3).value
            row_data['login_data'] = sheet.cell(i, 4).value
            row_data['title'] = sheet.cell(i, 5).value
            test_data.append(row_data)
            if mode == 'all':
                final_data = test_data
            else:
                final_data = []
                for item in test_data:
                    if item['case_id'] in eval(mode):
                        final_data.append(item)
        return final_data


if __name__ == '__main__':
    data = ReadExcel().get_data('test_data.xlsx', 'login')
    for i in data:
        print(i.items())


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM