मान लीजिए कि हमारे पास मॉड्यूल की एक प्रणाली है जो केवल उत्पादन चरण पर मौजूद है। इन मॉड्यूल का परीक्षण करने के समय मौजूद नहीं है। लेकिन फिर भी मैं उन मॉड्यूल का उपयोग करने वाले कोड के लिए परीक्षण लिखना चाहता हूं। आइए यह भी मान लें कि मुझे पता है कि उन मॉड्यूल से सभी आवश्यक वस्तुओं का नकल कैसे करें। सवाल यह है: मैं आसानी से वर्तमान पदानुक्रम में मॉड्यूल स्टब्स कैसे जोड़ूं?मैं गैर-मौजूदा मॉड्यूल के पदानुक्रम का नकल कैसे करूं?
यहां एक छोटा सा उदाहरण है। मैं परीक्षण करना चाहते हैं कार्यक्षमता actual.py
नामक एक फ़ाइल में रखा गया है:
actual.py:
def coolfunc():
from level1.level2.level3_1 import thing1
from level1.level2.level3_2 import thing2
do_something(thing1)
do_something_else(thing2)
अपने परीक्षण सुइट में मैं पहले से ही सब कुछ मैं जरूरत है: मैं thing1_mock
और thing2_mock
है। इसके अलावा मेरे पास एक परीक्षण समारोह है। मुझे वर्तमान मॉड्यूल सिस्टम में level1.level2...
जोड़ने की आवश्यकता है। इस तरह:
tests.py
import sys
import actual
class SomeTestCase(TestCase):
thing1_mock = mock1()
thing2_mock = mock2()
def setUp(self):
sys.modules['level1'] = what should I do here?
@patch('level1.level2.level3_1.thing1', thing1_mock)
@patch('level1.level2.level3_1.thing1', thing2_mock)
def test_some_case(self):
actual.coolfunc()
मुझे पता है कि मैं एक वस्तु किसी अन्य वस्तु और इतने पर युक्त sys.modules['level1']
स्थानापन्न कर सकते हैं। लेकिन यह मेरे लिए बहुत सारे कोड की तरह लगता है। मुझे लगता है कि बहुत सरल और सुंदर समाधान होना चाहिए। मुझे बस यह नहीं मिल रहा है।