1、AAA模型介绍
Arrange-Act-Assert模式(AAA模式)是一种编写优良测试用例的模式,可以帮助您编写更好的单元测试和功能测试。
AAA模式很强大,因为它很简单。通过保持测试简短、简洁和重点突出,可以进行干净的测试。更容易编写和更容易调试的测试!
您可以将测试分为四个步骤:
- Arrange:测试准备,测试执行所需要的一切准备。
- Act:测试执行,用来执行测试的唯一行为,这通常采用function/method调用的形式。
- Assert:测试断言,检查测试结果和逾期结果是否一致。
- Cleanup:测试清理,保证其它测试不受到影响。
2、AAA模式的好处
Arrange、Act 和 Assert 模式可以帮助您编写更好的单元测试。这是编写更好的单元测试的一种简单而有效的方法。通过将测试分解为这三个不同的阶段,您可以更轻松地确定需要测试的内容并确保您的测试是全面的。
使用 AAA 模式进行单元测试有如下几个好处:
(1)有助于保持测试简洁和集中
通过遵循严格的结构,当测试更小并且只测试单个事物时,它们更容易编写。测试应该只“断言”一个结果。通过以这种方式限制测试,一切都变得更易于管理。
(2)测试更容易阅读和理解
遵循 Arrange Act Assert 模式意味着测试不仅证明该功能有效,还展示了该功能或组件如何工作。由于它们更简洁,它们应该表明通过改变一个论点或环境因素,它们以特定的方式执行。这应该由测试记录,提供函数的演练及其作用。
(3)调试可以更容易
这种模式可以使调试更容易,因为每个测试都是一个独立的单元。应该没有外部因素来改变测试的执行方式。最重要的是,由于每个测试都专注于一个单一的结果,因此可以更容易地看到究竟是什么坏了。有人认为大量小测试不值得花时间,但以这种方式测试实用功能可能是有益的。团队成员可能会随着时间的推移而发生变化,并在无意中意外破坏功能。单元测试可以捕捉到这个小错误。
3、AAA模式的简单示例
这是使用pytest框架编写的 Python 绝对值函数abs()的基本单元测试用例:
def test_abs():
# Arrange
a = -5
# Act
answer = abs(a)
# Assert
assert answer == 5
reference:
Anatomy of a test — pytest documentation
Arrange-Act-Assert: A Pattern for Writing Good Tests | Automation Panda
https://robertmarshall.dev/blog/arrange-act-and-assert-pattern-the-three-as-of-unit-testing/