首先說下為什么要做用例可配置,有時候跑測試用例,並不需要全部都運行一遍,只需要運行部分用例就行了。這個時候就需要你在設計用例的時候,做到用例可配置化。說白點就是可以選擇執行部分用例,或者默認運行全部測試用例。
假設我有測試數據如下,里面有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())
