Estoy probando la integración de un sistema, utilizando solo las API públicas. Tengo una prueba que se parece a esto:
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...
Básicamente, estoy tratando de probar todo el "flujo" de una sola transacción. Cada paso del flujo depende del paso anterior siguiente. Debido a que me estoy restringiendo a la API externa, no puedo simplemente introducir valores en la base de datos.
Entonces, o tengo un método de prueba realmente largo que hace `A; afirmar; SI; afirmar; C; afirmar ... ", o lo divido en métodos de prueba separados, donde cada método de prueba necesita los resultados de la prueba anterior antes de que pueda hacer lo suyo:
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.
Creo que esto huele. ¿Hay una mejor manera de escribir estas pruebas?