在Python自動化測試中,使用自定義的裝飾器來給測試方法傳遞測試數據:
reader.py
import csv import json from openpyxl import load_workbook from setting import DATA_DIR from os import path class Reader: @classmethod def read_excel(cls,xlname, min_row, max_row, min_col, max_col): xlname = path.join(DATA_DIR,xlname) data = [] wb = load_workbook(xlname) ws = wb.active # 將選中區域轉換為列表 ls = list(ws.iter_rows(min_row=min_row, max_row=max_row, min_col=min_col, max_col=max_col)) wb.save(xlname) for row in ls: data_row = [] for col in row: data_row.append(col.value) data.append(data_row) wb.save(xlname) return data @classmethod def read_csv(cls, filename): file_name = path.join(DATA_DIR,filename) ls = None with open(file=file_name,mode='r',encoding='utf-8') as f: ls = list(csv.reader(f)) return ls
my_decorator.py
def my_decorator(sequeence): def outer(func): def inner(self): for item in sequeence: try: func(self,*item) except Exception: # print()僅供調試用,后期考慮將出錯日志寫入數據庫 print('測試有問題') else:# print()僅供調試用,后期考慮將通過日志寫入數據庫 print('測試通過') return inner return outer
data.csv
admin,1
wp,1
666666,1
msramsrsa,0
find_test.py
import time import unittest from parameterized import parameterized from pages.page_login import PageLogin from pages.page_system_operate_log import PageSystemOperateLog from utils.decorate import my_decorator from utils.driver import WebDriver from utils.reader import Reader class SysOperateLogFindPageTest(unittest.TestCase): ''' 系統操作日志頁面測試類:執行系統操作日志頁面的UI測試 作者:awake.silent@qq.com ''' @my_decorator(Reader.read_csv('search_log_by_username.csv')) def test_search_log_by_username(self, username, expect): ''' 對系統操作日志頁面的按照賬號搜索日志功能進行UI測試 :param username: 賬號 :param expect: 期望結果,'0‘代表搜索不到日志記錄,'1‘代表可以搜索到日志記錄 :return: ''' # 打開系統操作日志頁面 self.psol.open() time.sleep(2) # 輸入賬號并點擊搜索 self.psol.do_search(username) time.sleep(2) # 獲取搜索結果 result = self.psol.get_search_result() # 進行斷言 if expect == '0': self.assertEqual(0,len(result)) else: self.assertNotEqual(0,len(result)) for item in result: self.assertEqual(username, item.text)
原文地址:https://segmentfault.com/a/1190000042806706