python的unittest測試框架的擴充套件淺談

hqzxsc2006發表於2015-07-23

很多時候測試框架需要根據測試資料來自動生成測試用例指令碼,比如介面測試,通過不同引數構建組合去請求介面,然後驗證返回結果,如果這樣能通過配置excel資料來驅動測試,而不用去寫一大堆的測試用例指令碼程式碼,減輕了維護自動化測試指令碼的時間和成本,大概有一個思路可以實現以上想法,先寫一個通過的unittest測試基類,然後用過python的內建type去生成自定義的功能模組類,再在生成的自定義類裡以setattr方法來生成每一個功能模組類下的用例方法,這樣到時收集測試報告的時候,可以比較清晰的分類展示。

如以下函式是根據excel生成測試類和類下的測試用例方法,當然如果接入平臺裡測試,到最後測試完要去銷燬之前生成的類和方法

def generateTestCases(log,arglists):

    '''動態生成測試用例類及其方法'''
    class_list=[]
    for args in arglists:
        custom_class = type(args['inter'], (myEwsCase,), {"__doc__":args['cases'][0]['description']})
        for a in args['cases']:
            setattr(custom_class,'test_%s'%a['testcasename'],myEwsCase.getTestFunc(log,a))
        class_list.append(custom_class)

    return class_list

def destroyTestCases(log,custom_class,arglists):
   '''銷燬所有自動生成用例方法'''
    n=0
    for args in arglists:
        for a in args['cases']:
            delattr(custom_class[n],'test_%s'%a['testcasename'])
        n +=1


相關文章