Python Unittest测试框架

简介: 学习Python Unittest测试框架。

Python Unittest 这篇文章将不断的持续更新和重构



文章目录


1. 单元测试概述

2. 单元测试框架列举

3. 单元测试覆盖率

3.1 语句覆盖

3.2 判断覆盖

3.3 条件覆盖

3.4 路径覆盖

2 unittest编写与规范


1. 单元测试概述


。什么是单元测试?

。单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很

明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件

(或者场景)下某个特定函数的行为。

。单元测试什么时候测试?

。单元测试由谁负责?


单元测试需要注意


。单元测试的时候一个大前提就是需要清楚的知道,自己要测试的程序块所预期

的输入和输出,然后根据这个预期和程序逻辑来书写case。这里的预期结果一

定要针对需求/设计的逻辑去写,而不是针对程序的实现去写,否则单测就失

去了意义,照着错误的实现设计出的case也很可能是错的。


2. 单元测试框架列举


Unittest

Python内置的标准类库。它的API跟Java的JUnit、.net的NUnit, C++CppUnit很相似

Pytest

丰富、灵活的测试框架,语法简单,可以结合allure生成一个炫酷的测试报告,现在比较主流

Nose

Nose是对unittest的扩展,使得python的测试更加简单。

Mock

unittest.mock是 用来测试python的库。这个是一一个标准库(出现python3.3版本以后)


3. 单元测试覆盖率


代码覆盖率也被用于自动化测试和手工测试来度量测试是否全面的指标之一,

应用覆盖率的思想增强测试用例的设计

单元测试覆盖类型:

。语句覆盖

。条件覆盖

。判断覆盖

。路径覆盖

伪代码:
def demo_ method(a, b, x):
    if (a > 1 andb= == 0):
        X = X / a
    if (a == 2 orx > 1):
        X = X + 1
return X

3.1 语句覆盖

语句覆盖
1.语句覆盖定义
通过设计一定量的测试用例,保证被测试的方法每一行代码都会被执行一遍.
运行测试用例的时候被击中的代码行即称为被覆盖的语句
2.测试用例
  仅需要一条case,即可实现行覆盖
3.漏洞
   and-> or
行覆盖是一个最基础的覆盖方式,但是也是最薄弱的,如果完全依赖行覆盖,会出现很严重的问题

3.2 判断覆盖

判断覆盖
1.判断覆盖定义
  运行测试用例的过程被击中的判定语句
2.测试用例

微信图片_20221013143753.png

3.漏洞
大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径
a==2 Orx>1 ->a==2 or x<1

3.3 条件覆盖

条件覆盖
1.条件覆盖定义
  条件覆盖和判定覆盖类似,不过判定覆盖关注整个判定语句,而条件覆盖则关注某个判断条件
2.测试用例:if(a>1 and b==0)

微信图片_20221013143800.png

3.缺陷
  测试用例指数级增加(2**conditions)

3.4 路径覆盖

1.路径覆盖定义
  覆盖所有可能执行的路径
2.测试用例

微信图片_20221013143816.png

应用这些方法设计测试用例


2 unittest编写与规范


unitest官网


unittest编写与规范


Unittest提供了了test cases、 test suites、 test fixtures、 test runner相关的组件

编写规范:

测试模块首先import unittest

测试类必须继承unittest.TestCase

测试方法必须以"test_”开头

import unittest
class TestStringMethods(unittest.TestCase):
    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')
    def test_isupper(self):
        self.assertTrue('FOO'.isupper())
        self.assertFalse('Foo'.isupper())
    def test_split(self):
        s = 'hello world'
        self.assertEqual(s.split(), ['hello', 'world'])
        # check that s.split fails when the separator is not a string
        with self.assertRaises(TypeError):
            s.split(2)
if __name__ == '__main__':
 unittest.main()

待补充代码

总结:
1.setUp用来为测试准备环境,tearDown用 来清理环境。
2.如果想要在所有case执行之前准备一次环境,并在所有case执行结束之后再清理环境,我们可以用setUpClass()与tearDownClass();比如:数据库连接及销毁
3.如果想有些方法不在本次执行使用@unittest.skip
4.测试方法的命名:以test开头
5.各种执行-单一用例,全部


目录
相关文章
|
13天前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
114 1
|
2月前
|
Web App开发 人工智能 JavaScript
主流自动化测试框架的技术解析与实战指南
本内容深入解析主流测试框架Playwright、Selenium与Cypress的核心架构与适用场景,对比其在SPA测试、CI/CD、跨浏览器兼容性等方面的表现。同时探讨Playwright在AI增强测试、录制回放、企业部署等领域的实战优势,以及Selenium在老旧系统和IE兼容性中的坚守场景。结合六大典型场景,提供技术选型决策指南,并展望AI赋能下的未来测试体系。
|
8天前
|
安全 Linux 网络安全
Metasploit Pro 4.22.8-2025091701 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.8-2025091701 (Linux, Windows) - 专业渗透测试框架
93 2
Metasploit Pro 4.22.8-2025091701 (Linux, Windows) - 专业渗透测试框架
|
8天前
|
Linux 网络安全 iOS开发
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
138 1
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
|
18天前
|
安全 Linux 网络安全
Metasploit Framework 6.4.88 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.88 (macOS, Linux, Windows) - 开源渗透测试框架
294 0
|
2月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
125 18
|
1月前
|
机器学习/深度学习 算法 PyTorch
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
|
26天前
|
机器学习/深度学习 算法 PyTorch
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
|
26天前
|
缓存 安全 Linux
Metasploit Pro 4.22.8-2025082101 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.8-2025082101 (Linux, Windows) - 专业渗透测试框架
93 0
|
2月前
|
安全 测试技术 API
Python 单元测试详解
单元测试是Python开发中不可或缺的环节,能确保代码按预期运行、发现Bug、提升代码质量并支持安全重构。本文从基础概念讲起,逐步介绍Python单元测试的实践方法,涵盖unittest框架、pytest框架、断言使用、Mock技巧及测试覆盖率分析,助你全面掌握单元测试技能。
123 0

热门文章

最新文章

推荐镜像

更多