Python unittest模块心得

关于unittest模块的一些心得,主要是看官网的例子,加上一点自己的理解,官网地址:https://docs.python.org/3.6/library/unittest.html

unittest模块是Python的单元测试框架,支持自动化测试,所有用例共享setUp和tearDown代码,可以将测试用例聚合成测试集合,测试用例与报告框架独立。

为了实现这些功能,unittest支持下面几个面向对象式的概念:

  1. test fixture:代表了执行一个或多个测试用例所需要的准备工作,以及所有相关的清除工作。比如创建临时的或者代理的数据库,文件夹或者启动服务器。
  2. test case: 代表了一个单独的单元测试用例,会检查输入参数对应的反馈。unittest提供了一个基类TestCase用来创建测试用例。
  3. test suite: 代表了测试用例及测试套件的集合,用来将测试用例聚合到一起去执行。
  4. test runner: 用来执行测试用例并将测试结果反馈给用户。可以用图形接口,文字接口或者返回一些指定值来指示测试结果。
  5. test report: 可以使用unittest自带的TextTestRunner(),也可以使用HTMLTestRunner()产生HTML格式的测试报告,现在用BSTestRunner()代替HTMLTestRunner()

这些概念间的关系见下图:

下面给一些例子和说明:

import unittest

class TestStringMethods(unittest.TestCase):###编写的测试类要继承unittest.TestCase,类名称要以test开头,后面讲原因。

    def setUp(self):###所有用例共用的setup,在用例执行前先执行,用来搭建环境。
        print(‘case setup‘)

    def tearDown(self):###所有用例共用的tearDown,在用例执行结束后执行,用来清理环境。setUp和tearDown保证了每个test case都是独立的,不依赖与其他case.
        print(‘case teardown\n‘)

    def test_upper(self):###测试用例1,需要以test开头,原因后面讲。
        print(‘case test_upper‘)
        self.assertEqual(‘foo‘.upper(), ‘FOO‘)###assertEqual(a,b)如果a==b则用例pass,否则fail.

    def test_isupper(self):###测试用例2,需要以test开头。
        print(‘case test_isupper‘)
        self.assertTrue(‘FOO‘.isupper())###类似的assert用法
        self.assertFalse(‘Foo‘.isupper())

    def test_split(self):###测试用例3
        print(‘case test_split‘)
        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()###具体做了哪些工作后面会详细讲。

下面看一下case的运行结果:

case setup
case test_isupper
case teardown

case setup
case test_split
case teardown

case setup
case test_upper
case teardown

###三个case全部pass,因为assert里面的结果都正确。这里并没有体现出测试结果,只是将打印信息展示出来。我们可以看到针对每个test_的case都运行了一边,   每次都独立的调用了setUp和tearDown.case执行的顺序不是按照代码的顺序,而是按照case名称字母的顺序执行,这个是unittest.main()函数决定的。

原文地址:https://www.cnblogs.com/frost-hit/p/8295818.html

时间: 2024-11-09 03:55:18

Python unittest模块心得的相关文章

PyCharm 以 Python 形式执行包含 Unittest 模块的脚本

学习 Unittest 的时候,写的包含 Unittest 模块的脚本每次都以 Unittest 形式来执行,导致函数入口下的代码不能执行,原来是需要以 Python 形式执行脚本才行,需要这样设置才可以: 1.打开 Configurations: 2.点击左上角+号,添加 Python 类型脚本,输入 Name 和脚本地址,点击 OK 即可: 原文地址:https://www.cnblogs.com/yu97271486/p/12411904.html

selenium + python自动化测试unittest框架学习(四)python导入模块及包知识点

在写脚本的时候,发现导入某些模块,经常报错提示导入模块失败,这里来恶补下python导入模块的知识点. 1.模块导入时文件查找顺序 在脚本中,import xxx模块时的具体步骤: (1)新建一个module (2)将module插入到sys.module (3)查找module的路径,查找的顺序为先查找当前使用导入模块的文件同一级目录,之后是python的搜索模块的路径集sys.path,最后是python所添加的默认环境变量的路径Python path (4)module查找到之后装载mod

python unittest基本介绍

python内部自带了一个单元测试的模块,pyUnit也就是我们说的:unittest 1.介绍下unittest的基本使用方法: 1)import unittest 2)定义一个继承自unittest.TestCase的测试用例类 3)定义setUp和tearDown,在每个测试用例前后做一些辅助工作. 4)定义测试用例,名字以test开头. 5)一个测试用例应该只测试一个方面,测试目的和测试内容应很明确.主要是调用assertEqual.assertRaises等断言方法判断程序执行结果和预

python unittest单元测试

单元测试作为任何语言的开发者都应该是必要的,因为时隔数月后再回来调试自己的复杂程序时,其实也是很崩溃的事情.虽然会很快熟悉内容,但是修改和调试将是一件痛苦的事情,如果你在修改了代码后出现问题的话,而单元测试可以帮助我们很快准确的定位到问题的位置,出现问题的模块和单元.所以这是一件很愉快的事情,因为我们知道其它修改或没有修改的地方仍然是正常工作的,而我们目前的唯一问题就是搞定眼前这个有点问题的“家伙”.所以工作会在轻松中开始,并且很快将会结束,因为你已经知道很多信息了. 单元测试自然是对程序中最小

python unittest框架

unittest模块提供了单元测试的组件,方便开发人员进行自测. 一.unittest中的重要概念: 测试用例:测试用例对象是最小的测试单位,针对指定的输入来测试期待的输出.由类TestCase的派生类或FunctionTestCase类来创建的. 测试固件:代表了测试相关的准备和清除工作,比如在一个测试进行之前需要创建数据库连接,测试结束之后需要关闭数据库连接.测试固件是在TestCase子类中进行重载的setUp和tearDown函数实现的.每个测试用例执行前后都会自动执行setUp和tea

简单实现接口自动化测试(基于python+unittest)

简单实现接口自动化测试(基于python+unittest) 简介 本文通过从Postman获取基本的接口测试Code简单的接口测试入手,一步步调整优化接口调用,以及增加基本的结果判断,讲解Python自带的Unittest框架调用,期望各位可以通过本文对接口自动化测试有一个大致的了解. 引言 为什么要做接口自动化测试? 在当前互联网产品迭代频繁的背景下,回归测试的时间越来越少,很难在每个迭代都对所有功能做完整回归.但接口自动化测试因其实现简单.维护成本低,容易提高覆盖率等特点,越来越受重视.

第二种方式,修改python unittest的执行顺序,使用猴子补丁

1.按照测试用例的上下顺序,而不是按方法的名称的字母顺序来执行测试用例. 之前的文章链接 之前写的,不是猴子补丁,而是要把Test用例的类名传到run里面去执行,与原生的使用有一点区别.现在修改成,用的时候代码与原生unittest完全一模一样,但运行时候使用与原生不同的逻辑. import time import unittest from unittest.main import TestProgram from app.utils.utils_ydf import LogManager c

python mock模块使用(一)

什么是mock unittest.mock是一个用于在Python中进行单元测试的库,Mock翻译过来就是模拟的意思,顾名思义这个库的主要功能是模拟一些东西. 它的主要功能是使用mock对象替代掉指定的Python对象,以达到模拟对象的行为. 学过python自动化的对unittest并不陌生,unittest其实是单元测试框架, 但对于单元测试,估计很多小伙伴都不懂,单元测试才是自动化测试的至高境界,其中mock是单元测试的脊髓所在 mock能做什么: 1.前后端联调,如果你是一个前端页面开发

python unittest基本思路

unittest是python中的单元测试框架,但也可以作为selenium自动化测试框架. 基本思路主要分为以下三步: 1. 设计测试用例,注意点主要是要包含测试类和测试方法 class unittest_class(unittest.TestCase):  #必须包含unittest模块下的TestCase类 def setUp(self): print("start") def test_add1(self):   #测试方法需以test开头 assertEqual(断言) de