python 裝飾器(實現dataprovider)
阿新 • • 發佈:2019-01-29
接觸裝飾器,是因為在使用unittest測試時,想要看起來更簡潔的傳遞資料,看了下Java的TestNG有DataProvider這個東東,python裡第三方庫也有實現的。但還是滿足不了自己的要求,基礎的東西還是學一下更好。
我的設想:
測試用例的資料都放在一個test_cases_data的dict中(test_case_name為key),通過dataprovider根據test_case_name獲取其對應的測試資料,並傳遞給test method,如下:
@data_provider(['login_success'])
def test_login_success (self, user, password, verifycode):
......
獻出我的data_provider檔案:
import data.config
def data_provider(name_list):
"""第一個自己的decorator"""
test_cases_data = get_data_by_name(name_list)
def case_decorator(func):
def repl(self, **kwargs):
for test_case_data in test_cases_data:
func(self, **test_case_data)
return repl
return case_decorator
def get_data_by_name(name_list):
test_cases_data = data.config.get_test_cases_data()
case_data = []
for name in name_list:
case_data.append(test_cases_data[name])
return case_data