2011-03-01 78 views
0

我正在爲支付流程創建單元測試。有大約20個單元的單元測試書寫 - 一些正面情況和一些負面情況。如何在測試中創建測試對象?

例如:

payment_screen=PaymentScreen() 

而且我幾個概念。

首先 - 創建一個付款人物體賦予屬性:

payer=Payer(last_name,country_code) 

COUNTRY_CODE是很重要的,因爲系統不允許發送項目到其他國家

payer=Payer.return_correct_payer() 

東西如:

類付款人:

@staticmethod 
def return_correct_payer(): 
payer=Payer() 
payer.country_code='US' 
payer.last_name='Smith' 

並在這兩個選項

payment_screen.fill_payer_data(payer) 

而一個又一個概念:

在payment_screen只是創建了兩個方法:

fill_payer_data_with_correct_data() 

fill_payer_data_with_uncorrect_data() 

哪一個是最好的?或者,也許你有另一個想法(我敢肯定,你有)

編輯

感謝您的答覆,但它不是我所需要的。 我只是不想在給定屬性的每個測試用例中創建對象Pax。

我有20個測試用例,所以現在我必須寫20次:

payer=Payer('Smith','US') 

我不想重複我的代碼

回答

0

嘿。
可能回答嘲笑是您首先需要的,但我想展示如何在測試中創建對象。 所以,如果我需要一個對象,具有給定參數我用生成器模式(實際上是修改生成器模式從GOF),它看起來像這樣:

class User { 
    private string firstName; 
    private string lastName; 

    public User(){}; 

    //now the essence 
    public User withFirstName(strFirstName) { 
     this.firstName = strFirstName; 
     return this; 
    } 

    public User withLastName(strLastName) { 
     this.lastName = strLastName; 
     return this; 
    } 


    //some other stuff 
} 

然後我開始物體:

User testUser1 = new User() 
          .withFirstName("John") 
          .withLastName("Doe"); 

,然後我做與它,我需要什麼。

P.S.對不起,代碼不是Python語法...但你應該得到它