Saya integrasi sedang menguji suatu sistem, dengan hanya menggunakan API publik. Saya memiliki tes yang terlihat seperti ini:
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...
Pada dasarnya, saya mencoba menguji seluruh "aliran" dari satu transaksi. Setiap langkah dalam aliran tergantung pada langkah sebelumnya yang berhasil. Karena saya membatasi diri ke API eksternal, saya tidak bisa begitu saja memasukkan nilai ke dalam basis data.
Jadi, entah saya punya satu metode pengujian yang sangat panjang yang tidak `A; menegaskan; B; menegaskan; C; menegaskan ... ", atau saya memecahnya menjadi metode pengujian terpisah, di mana setiap metode pengujian membutuhkan hasil pengujian sebelumnya sebelum dapat melakukan hal tersebut:
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.
Saya pikir ini baunya. Apakah ada cara yang lebih baik untuk menulis tes ini?