ฉันกำลังรวมการทดสอบระบบโดยใช้ 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...
โดยพื้นฐานแล้วฉันกำลังพยายามทดสอบ "การไหล" ทั้งหมดของธุรกรรมเดียว แต่ละขั้นตอนในการไหลขึ้นอยู่กับขั้นตอนก่อนหน้านี้ที่ประสบความสำเร็จ เนื่องจากฉัน จำกัด ตัวเองกับ API ภายนอกฉันจึงไม่สามารถไปหาค่าในฐานข้อมูล
ดังนั้นไม่ว่าฉันจะมีวิธีการทดสอบที่ยาวจริงๆซึ่งก็คือ `A; ยืนยัน; B; ยืนยัน; ค; ยืนยัน ... "หรือฉันแบ่งมันออกเป็นวิธีการทดสอบแยกซึ่งวิธีการทดสอบแต่ละวิธีต้องใช้ผลลัพธ์ของการทดสอบก่อนหน้านี้ก่อนที่มันจะทำสิ่งนั้น:
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.
ฉันคิดว่ามันมีกลิ่น มีวิธีที่ดีกว่าในการเขียนแบบทดสอบเหล่านี้หรือไม่?