- unittest 是 Python 自带的单元测试框架,可以按需批量执行测试用例脚本。
- 开发人员使用 unittest 进行代码自测。
- 测试人员使用 unittest 运行自动化的测试脚本(如Selenium自动化测试脚本、接口测试自动化测试脚本等)。
先看一下来自「百度文心一言」对单元测试的解释:
单元测试(unit testing)是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义。比如,在C语言中单元指一个函数,在Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
在测试领域,一般将单元测试划分到 “白盒测试” 的范畴。相关的内容不限于:① 代码走读、代码评审,这一般是以人工观察的方式实现;② 利用各开发语言提供的单元测试框架(如Junit、Unittest),编写单元测试用例并自动执行测试;③ 利用代码质量检测工具(如sonar等),自动实现代码编写规范的检查、统计代码覆盖、进行漏洞检测等;④ 将单元测试集成到 CI/CD(持续集成/持续部署)中实现持续的自动化测试,为系统的自动构建和部署提供信心。
单元测试一般由开发人员自行完成,而单元测试的完成度一般用 “逻辑覆盖率” 来衡量。单元测试逻辑覆盖率是一种评估单元测试质量的指标,用于衡量测试用例对被测程序逻辑的覆盖程度。具体来说,它可以通过计算测试用例对程序中的逻辑条件的覆盖率来评估测试的完整性和可靠性。另外在测试用例设计方法中,一般也会参考逻辑覆盖率对业务场景进行用例设计并生成测试用例。
单元测试逻辑覆盖率常见以下几种方式,其中基于实施成本考量,一般语句和分支覆盖率使用最为广泛。
- 语句覆盖率:计算被测试的语句数与总语句数之比
- 分支覆盖率:计算被测试的分支条件数与总分支条件数之比
- 路径覆盖率:计算被测试的路径数与总路径数之比
- 条件覆盖率:计算被测试的条件数与总条件数之比
- 圈复杂度:按被测程序的圈复杂度进行测试覆盖
一般情况,测试的充分度:
- 路径覆盖 > 分支覆盖 > 语句覆盖
- 路径覆盖 和 条件覆盖谁的测试更充分不一定,要看具体情况而言