python - Unit testing a method called during initialization? -


मेरे पास निम्न की तरह एक वर्ग है:

  वर्ग सकारात्मक (वस्तु): def __init__ (स्वयं, आइटम): स्वयं ._विalidate_item (आइटम) self.item = item def _validate_item (स्वयं, आइटम): यदि आइटम & lt; = 0: बढ़ाएँ ValueError ("आइटम सकारात्मक होना चाहिए।")  

मैं _validate_item () के लिए एक यूनिट टेस्ट लिखना चाहूंगा, जैसे:

  वर्ग पॉज़िटेटेट्स (unittest.TestCase): def test_validate_item_error स्वयं): स्वयं। सशर्तराइज (मान एर्रर, पॉजिटिव। _विलिडेट_इटेम, 0)  

दुर्भाग्यवश, यह काम नहीं करेगा क्योंकि यूनिट परीक्षण केवल क्लास इंस्टेंस के बजाय विधि से 0 पास करता है ( स्वयं पैरामीटर) और 0 के लिए। क्या इस मान्यता पद्धति का परीक्षण अप्रत्यक्ष रूप से __ init __ () वर्ग के माध्यम से किया जा सकता है?

यदि आप विधि के शरीर में स्वयं का उपयोग नहीं कर रहे हैं, तो यह एक संकेत है कि उसे कक्षा सदस्य होने की आवश्यकता नहीं हो सकती है। आप या तो _validate_item फ़ंक्शन को मॉड्यूल स्कोप में ले जा सकते हैं:

  def _validate_item (आइटम): यदि आइटम & lt; = 0: बढ़ाएँ ValueError ("आइटम सकारात्मक होना चाहिए।")  < / प्री> 

या यदि वास्तव में कक्षा में रहने की जरूरत है, तो विधि को स्थिर करें:

  वर्ग सकारात्मक (ऑब्जेक्ट): def __init __ (स्वयं, आइटम): self._validate_item (आइटम) self.item = item_staticmethod def _validate_item (आइटम): यदि आइटम & lt; = 0: बढ़ाएँ ValueError ("आइटम सकारात्मक होना चाहिए।")  

आपका परीक्षण तब काम करना चाहिए जैसा लिखा है।


Comments

Popular posts from this blog

asp.net - Javascript/DOM Why is does my form not support submit()? -

sockets - Delphi: TTcpServer, connection reset when reading -

javascript - Classic ASP "ExecuteGlobal" statement acting differently on two servers -