난 통합이 단지 공용 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; 주장; 비; 주장; 씨; assert ... "또는 별도의 테스트 방법으로 나눕니다. 여기서 각 테스트 방법은 이전 테스트의 결과가 필요합니다.
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.
나는 이것이 냄새가 생각합니다. 이 테스트를 작성하는 더 좋은 방법이 있습니까?