Je teste l' intégration d' un système, en utilisant uniquement les API publiques. J'ai un test qui ressemble à ceci:
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...
Fondamentalement, j'essaie de tester l'ensemble du "flux" d'une seule transaction. Chaque étape du flux dépend de la réussite de l'étape précédente. Parce que je me limite à l'API externe, je ne peux pas simplement piquer des valeurs dans la base de données.
Donc, soit j'ai une très longue méthode de test qui fait `A; affirmer; B; affirmer; C; affirmer ... ", ou je le décompose en méthodes de test distinctes, où chaque méthode de test a besoin des résultats du test précédent avant de pouvoir faire son travail:
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.
Je pense que ça sent. Existe-t-il une meilleure façon d'écrire ces tests?