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天前
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
61 8
|
8天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
39 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
14天前
|
安全 Ubuntu Linux
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
38 9
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
|
5天前
|
JSON 数据可视化 测试技术
python+requests接口自动化框架的实现
通过以上步骤,我们构建了一个基本的Python+Requests接口自动化测试框架。这个框架具有良好的扩展性,可以根据实际需求进行功能扩展和优化。它不仅能提高测试效率,还能保证接口的稳定性和可靠性,为软件质量提供有力保障。
23 7
|
3天前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
17 2
|
18天前
|
Java 测试技术 API
探索软件测试中的自动化测试框架
本文深入探讨了自动化测试在软件开发中的重要性,并详细介绍了几种流行的自动化测试框架。通过比较它们的优缺点和适用场景,旨在为读者提供选择合适自动化测试工具的参考依据。
|
18天前
|
数据管理 jenkins 测试技术
自动化测试框架的设计与实现
在软件开发周期中,测试是确保产品质量的关键步骤。本文通过介绍自动化测试框架的设计原则、组件构成以及实现方法,旨在指导读者构建高效、可靠的自动化测试系统。文章不仅探讨了自动化测试的必要性和优势,还详细描述了框架搭建的具体步骤,包括工具选择、脚本开发、执行策略及结果分析等。此外,文章还强调了持续集成环境下自动化测试的重要性,并提供了实际案例分析,以帮助读者更好地理解和应用自动化测试框架。
|
18天前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
4天前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
30 11
|
1月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
60 3
下一篇
DataWorks