1. 程式人生 > >python 裝飾器(實現dataprovider)

python 裝飾器(實現dataprovider)

接觸裝飾器,是因為在使用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