2015-11-25 3 views
5

मैं प्रेजेंटर-फर्स्ट दृष्टिकोण को एक नई परियोजना में उपयोग करने का प्रयास कर रहा हूं। मैं खुद को नीचे से सबसे नीचे मिल गया। क्या मैं इस परीक्षण में इतने सारे दावों को शामिल करके गरीब इकाई परीक्षण प्रथाओं का उपयोग कर रहा हूं? यदि हां, तो परीक्षण के लिए या प्रस्तुतकर्ता.सेटऑवरव्यू के कार्यान्वयन के लिए मेरे दृष्टिकोण के साथ समस्या है? दूसरे शब्दों में, setOverview विधि self.view.setSalesQty की बजाय self.setSalesQty को कॉल करनी चाहिए? इस मामले में, मेरे पास presenter.setSalesQty के लिए एक अलग परीक्षण होगा और testSetOverview परीक्षण को अब परीक्षण करने के बारे में चिंता करने की आवश्यकता नहीं होगी।एकाधिक प्रविष्टियों के साथ प्रेजेंटर-फर्स्ट यूनिटस्ट

def testSetOverview(self): 
    # set up mock objects 
    p = PropertyMock() 
    type(self.mock_model).descriptions = p 
    self.mock_model.getData.side_effect = [5, 10] 
    self.mock_model.getDescription.side_effect = 'Description' 

    # get required variables 
    end = dt.date.today() 
    start = dt.date(year=end.year, month=1, day=1) 
    pn = 'abcd' 

    # call presenter method 
    self.presenter.setOverview(pn) 

    # test to make sure proper calls were made 
    model_getData_calls = [call(pn=pn, start=start, end=end, 
         data=self.mock_model.SHIPPED_QUANTITY), 
        call(pn=pn, start=start, end=end, 
         data=self.mock_model.PRICE_PAID)] 

    self.mock_model.getData.assert_has_calls(model_getData_calls, any_order=True) 
    assert self.mock_model.getDescription.called 

    self.mock_view.setSalesQty.assert_called_with(val=5) 
    self.mock_view.setSalesDols.assert_called_with(val=10) 
    self.mock_view.setDescription.assert_called_with(val='Description') 

उत्तर

1

तो आम तौर पर जब यूनिट परीक्षण लिखते हैं तो आप एक विशिष्ट चीज़ का परीक्षण करना चाहेंगे। क्योंकि जब आप अधिक कोड लिखते हैं और परीक्षण विफल रहता है तो यह समझने के लिए आपके लिए बहुत आसान होगा कि इकाई परीक्षण में क्या असफल रहा। हो सकता है कि आपके द्वारा अब तक किए गए दावों के साथ आप कोड के एक व्यवहार या कार्यक्षमता का परीक्षण कर रहे हैं, तो दावे ठीक हैं।

उदाहरण बनाने के लिए, आपके पास list_counter से नीचे दो कार्य हैं word_count पर निर्भर करता है। तो list_counter का परीक्षण करते समय आप यह सुनिश्चित करने के लिए दो दावे कर सकते हैं कि list_counter में दो घटक सही हैं। लेकिन शायद word_count अलग से परीक्षण करना बुद्धिमान होगा।

def word_count(word): 
    return len(word) 

def list_counter(listing=None): 
    total = 0 
    for l in listing: 
     total += word_count(l) 

    return (len(listing), total) 

मॉडल के जैसा दिखने के लिए मेरे पास विशेष रूप से आपके मामले पर अधिक टिप्पणी करना मुश्किल है। self.mock_view कहीं भी से बाहर दिखाई देता है।

+0

self.mock_view और self.mock_model के बारे में अधिक जानकारी नहीं डालना जानबूझकर था - ये नकली वस्तुएं हैं, और इस तरह (मेरी समझ में) परीक्षण के तहत नहीं होना चाहिए। प्रस्तुतकर्ता स्वयं परीक्षण में है, और यह इन दो वस्तुओं पर निर्भर है, और इसका उपयोग करने के लिए उनका उपयोग करता है। – wesanyer

+0

हां, उन्हें परीक्षण नहीं किया जाना चाहिए, लेकिन वे जो वस्तुएं प्रस्तुत करते हैं उन्हें देखकर आपको सलाह दी जा सकती है कि आपको अपना परीक्षण कैसे लिखना चाहिए। – Jonathan

+0

पर्याप्त मेला। जिस दृष्टिकोण को मैं ले रहा था, हालांकि, "प्रस्तुतकर्ता पहले" को ध्यान में रखते हुए, अच्छी तरह से प्रस्तुतकर्ता इकाई परीक्षण और कार्यान्वयन पहले लिखना था। मॉडल या दृश्य के लिए कुछ भी लिखने से पहले। मैंने प्लेसहोल्डर के रूप में मैक्स में सबबैड किया, और मेरे प्रस्तुतकर्ता परीक्षण और कार्यान्वयन को लिखने के बाद, मैंने अपने मॉडल के लिए प्रारंभिक स्थान के रूप में मॉक किए गए विधि कॉल का उपयोग किया और यूनिट परीक्षण और कार्यान्वयन को देखा। क्या यह अटूट है? – wesanyer

संबंधित मुद्दे