Tôi đang tích hợp kiểm tra một hệ thống, bằng cách chỉ sử dụng các API công khai. Tôi có một bài kiểm tra trông giống như thế này:
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...
Về cơ bản, tôi đang cố gắng kiểm tra toàn bộ "dòng chảy" của một giao dịch. Mỗi bước trong luồng phụ thuộc vào bước trước đó thành công. Vì tôi giới hạn bản thân với API bên ngoài, tôi không thể chỉ đưa các giá trị vào cơ sở dữ liệu.
Vì vậy, hoặc tôi có một phương thức thử nghiệm thực sự dài mà `A; khẳng định; B; khẳng định; C; khẳng định ... "hoặc tôi chia nó thành các phương pháp thử nghiệm riêng biệt, trong đó mỗi phương pháp thử nghiệm cần kết quả của thử nghiệm trước đó trước khi có thể thực hiện việc của mình:
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.
Tôi nghĩ rằng mùi này. Có cách nào tốt hơn để viết các bài kiểm tra này?