アイム統合のみ公開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を実行する非常に長いテストメソッドが1つあります。主張する; B; 主張する; C; または...私はそれを別々のテストメソッドに分割します。各テストメソッドは、それを実行する前に前のテストの結果を必要とします:
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.
これは臭いだと思う。これらのテストを記述するより良い方法はありますか?