मैं एकीकरण एक प्रणाली का परीक्षण, केवल सार्वजनिक API का उपयोग करके। मेरे पास एक परीक्षण है जो कुछ इस तरह दिखता है:
def testAllTheThings():
email = create_random_email()
password = create_random_password()
ok = account_signup(email, password)
assert ok
url = wait_for_confirmation_email()
assert url
ok = account_verify(url)
assert ok
token = get_auth_token(email, password)
a = do_A(token)
assert a
b = do_B(token, a)
assert b
c = do_C(token, b)
# ...and so on...
मूल रूप से, मैं एकल लेनदेन के संपूर्ण "प्रवाह" का परीक्षण करने का प्रयास कर रहा हूं। प्रवाह में प्रत्येक चरण पिछले चरण के सफल होने पर निर्भर करता है। क्योंकि मैं खुद को बाहरी एपीआई तक सीमित कर रहा हूं, मैं सिर्फ डेटाबेस में मूल्यों को पोक नहीं कर सकता।
तो, या तो मेरे पास वास्तव में एक लंबी परीक्षण विधि है जो `ए; ज़ोर; बी; ज़ोर; सी; मुखर ... ", या मैं इसे अलग-अलग परीक्षण विधियों में तोड़ता हूं, जहां प्रत्येक परीक्षण विधि को पिछले परीक्षण के परिणामों की आवश्यकता होती है, इससे पहले कि यह हो सके:
def testAccountSignup():
# etc.
return email, password
def testAuthToken():
email, password = testAccountSignup()
token = get_auth_token(email, password)
assert token
return token
def testA():
token = testAuthToken()
a = do_A(token)
# etc.
मुझे लगता है कि यह बदबू आ रही है। क्या इन परीक्षणों को लिखने का एक बेहतर तरीका है?