मैं एक वर्ग है जो एक और से ली गई है पर कुछ unittests लिखने के लिए कोशिश कर रहा हूँ, लेकिन मैं माता पिता के वर्ग init विधि उपहास करने के लिए है, जो afaik आप नहीं कर सकते कुछ कठिनाइयों है, तो मैं सुझाव के लिए देख रहा हूँ ।नकली माता पिता वर्ग __init__ विधि
यहाँका एक उदाहरण है कि मेरी कक्षाओं
Imported.py
class Imported():
def __init__(self, a="I am Imported"):
print("a:{}".format(a))
Parent.py
from Imported import Imported
class Parent(object):
parent_list = ["PARENT"]
def __init__(self, a="I am Parent"):
imported = Imported(a)
Derived.py
from Parent import Parent
class Derived(Parent):
Parent.parent_list.append("DERIVED")
मेरी unittests में हैं मैं इसे सत्यापित करना चाहते हैं जब मैं व्युत्पन्न वर्ग, व्युत्पन्न() से किसी ऑब्जेक्ट को तुरंत चालू करता हूं तो माता-पिता.parent_list == ["PARENT", "DERIVED"]।
इस समाधान के दोनों काम नहीं करता है
test_Derived.py
import unittest
from mock import patch
from Derived import Derived
class test_Derived(unittest.TestCase):
@patch("Derived.Parent.__init__")
def test_init_001(self, mock_parent_init):
a = Derived("I am Derived")
mock_parent_init.assert_called_with("I am Derived")
self.assertEquals(a.parent_list, ["PARENT", "DERIVED"])
@patch("Derived.Imported.Imported")
def test_init_002(self, mock_parent_init):
a = Derived("I am Derived")
mock_parent_init.assert_called_with("I am Derived")
self.assertEquals(a.parent_list, ["PARENT", "DERIVED"])
test_init_001 साथ
TypeError: __init__() should return None, not 'MagicMock'
test_init_002 विफल रहता है
ImportError: No module named Parent.Imported
किसी के साथ विफल रहता है uggestion?
क्यों वास्तव में 'जनक .__ init__' मज़ाक उड़ाया करने की आवश्यकता है? क्यों न सिर्फ 'आयातित' नकली? –
आपके दूसरे परीक्षण को 'माता-पिता' आयातित करने की आवश्यकता है। –
अंतिम लेकिन कम से कम नहीं, आपने 'parent.arent_list' * को जगह * में संशोधित किया है, इसलिए दोनों' parent.parent_list' और 'derived.parent_list' एक ही ऑब्जेक्ट को संदर्भित करते हैं। इसलिए 'parent.arent_list' में अब' "सत्यापित" है। आप शायद इसके बजाय 'व्युत्पन्न' के लिए एक प्रति बनाना चाहते हैं: 'parent_list = parent.arent_list + [" DERIVED "]'। आपके परीक्षण इस के लिए जांचना चाह सकते हैं। –