我有很长时间的测试,它调用了很多测试所有应用程序的函数。我正在寻找一种方法,在测试失败的情况下,我可以回滚自动化对测试所做的特定更改。
例如:
test "add user and login", session do
session
|> add_user()
# There can be more functions here...
end
def add_user(session, loops // 2) do
try do
session
|> visit("example.com")
|> fill_in(css("#user_name", with "John Doe")
|> click(css("#add_user_button"))
|> assert_has(css("#user_added_successfully_message")
rescue
msg -> if loops > 0, do: add_user(session, loops - 1), else: raise msg
end
end
如果 assert_has 函数失败(用户添加但消息未显示),我想回滚在救援中再次调用 add_user 函数之前数据库上发生的所有更改。