我正在通过仅使用公共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; 断言; 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.
我觉得这闻起来。有没有更好的方式编写这些测试?