首页 > 编程语言 >python unittest

python unittest

时间:2023-03-07 18:47:33浏览次数:44  
标签:python unittest 用例 测试用例 测试 test 执行

s

https://docs.python.org/zh-cn/3.10/library/unittest.html

https://softdown02.rbread05.cn/down/unittest2-0.5.1.tar.zip

 

一、unittest 编写规范

1、unittest  介绍

unittest,也可以称为PyUnit,类似于JUnit,用于python项目中,可以用来创建全面的测试套件,可以用于单元自动化测试(模块)、接口自动化测试(接口)、功能自动化测试(UI)等等。

官方文档:https://docs.python.org/3.6/library/unittest.html

unittest具备创建测试用例、测试套件、测试夹具的能力,包括的组件如下:

  • Test Fixture(测试夹具):通过使用测试夹具,可以定义在单个或者多个测试执行之前的准备工作和测试执行后的清理工作。
  • Test Case(测试用例):一个测试用例是在unittest中执行测试的最小单元。它通过unittest提供的assert方法来验证一组特定的操作或输入以后得到的具体响应。unittest提供了一个名为TestCase的基础类,可以用来创建测试用例。
  • Test Suite(测试套件):一个测试套件是多个测试用例的集合,是针对被测程序的对应功能和模块创建的一组测试,一个测试套件内的测试将一起执行。
  • Test Runner(测试执行器):测试执行器负责测试执行调试并且生成测试结果给用户。测试执行器可以使用图形界面、文本界面或者特定的返回值来展示测试执行结果。
  • Test Report(测试报告):测试报告用来展示所有执行用例的成功或者失败状态的汇总,执行失败的测试步骤的预期结果与实际结果,还有整体运行状况及运行时间的汇总。注意,unittest本身是没有相应的内置模块来生成友好的报告,但我们可以借用unittest的扩展库HTMLTestRunner来实现,需要单独下载并放到python安装目录下。

2、unittest 编写规范

  测试模块需导入 unittest 框架: import

 测试类必须继承 unittest.TestCase; 建议以Test开头

 测试方法必须以"test _"开头

二、unittest 测试框架结构

setUp()方法

  一个测试用例是从setUp()方法开始执行的,用这个方法在每个测试执行前去执行一些初始化的任务。比如创建浏览器实例,访问URL,加载测试数据和打开日志文件等。此方法没有参数,不返回任何值。当定义一个setUp()方法,测试执行器在每次执行测试方法之前优先执行该方法。

tearDown()方法

  类似于setUp()方法在每个测试方法之前被调用,TestCase类也会在测试执行完成后调用tearDown()方法来清理所有的初始化值。一旦测试被执行,在setUp()中定义的值将不再需要,所以最好的在完成的时候清理掉。

setUpClass()方法

      必须使用@classmethod 装饰器,  所有case运行之前只运行一次

tearDownClass() 方法

   必须使用@classmethod装饰器, 所有case运行完之后只运行一次

unittest.skip():装饰器

    当运行用例时,有些用例可能不想执行等,可用装饰器暂时屏蔽该条测试用例。一种常见的用法就是比如说想调试某一个测试用例,想先屏蔽其他用例就可以用装饰器屏蔽。

@unittest.skip(reason): skip(reason)装饰器:无条件跳过装饰的测试,并说明跳过测试的原因。

@unittest.skipIf(reason): skipIf(condition,reason)装饰器:条件为真时,跳过装饰的测试,并说明跳过测试的原因。

@unittest.skipUnless(reason): skipUnless(condition,reason)装饰器:条件为假时,跳过装饰的测试,并说明跳过测试的原因。

@unittest.expectedFailure(): expectedFailure()测试标记为失败。

三、unittest 测试用例

1、unittest 会自动识别以test开头的方法为测试用例

2、执行顺序为test后面字母顺序执行;例如: test_a、test_b、test_c

四、unittest 执行测试用例4中方法

1、unittest.main()

2、加入到容器中执行

# 构造测试集
    suite = unittest.TestSuite()
    suite.addTest(TestClass("test_method1"))
    suite.addTest(TestClass("test_method2")) 
    # 执行测试
    runner = unittest.TextTestRunner()
    runner.run(suite)

3、同时测试多个类

suite1 = unittest.TestLoader().loadTestsFromTestCase(TestClass1)

suite2 = unittest.TestLoader().loadTestsFromTestCase(TestClass2)

suite = unittest.TestSuite([suite1,suite2])

unittest.TextTestRunner(verbosity=2).run(suite)

 4、通过discover方式加载某路径下的所有测试用例

test_dir = './TestCase'
discover= unittest.defaultTestLoader.discover(case_dir=test_dir,pattern='test*.py')
runner=unittest.TextTestRunner() 
runner.run(discover)

-case_dir:这个是待执行用例的目录。

-pattern:这个是匹配脚本名称的规则,test*.py意思是匹配test开头的所有脚本。  -top_level_dir:这个是顶层目录的名称,一般默认等于None就行了。

5、通过 HTMLTestRunner 执行所有的测试用例

#导入用例
def case_all():
  case_pash = 'F:PythonInterface_automation'
  discover = unittest.defaultTestLoader.discover(case_pash,pattern='ceshi*.py')

   #添加用例,在case_path的路径下,所有以ceshi开头的文件都当做用例文件执行
return discover

if __name__ == '__main__':
 fp = open(report_repash, "wb") # 保存报告文件
 print(fp)
 runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title=title + ':',)
 runner.run(case_all()) # 执行用例
 fp.close()

五、unittest 执行测试用例执行过程总结

 六、最简单的Demo

 

 运行结果:

 

end

标签:python,unittest,用例,测试用例,测试,test,执行
From: https://www.cnblogs.com/lindows/p/17189121.html

相关文章

  • 生成你的自定义密码本Python
    python生成一个自定义密码本importitertoolsasitsimportos#定义生成密码本的函数defgenerate_passwords(length,combination):ifcombination=="1":......
  • PyUint测试框架:unittest
    unittest是python的内置模块,支持自动化测试,测试用例间可共享setUp(测试前的初始化)以及测试后的清理工作terDown,可以将测试用例合并为集合执行,然后输出测试报告1基本概......
  • Python第三方库request的安装及基本用法
    ​1、安装安装命令:pipinstallrequests豆瓣源安装:pipinstallrequests-ihttps://pypi.douban.com/simple/​2、requests常见参数​url参数:传入的是字符串,请求地址data......
  • python-函数
    函数的定义先定义再使用def定义函数的时候代码不执行调用函数的时候代码才执行函数的参数形参定义函数时候的参数形参必须是......
  • 22个受欢迎的Python不同类型开源框架
    22个受欢迎的Python不同类型开源框架记录:一、PythonWeb框架Django:PythonWeb应用开发框架链接:https://www.djangoproject.com/Django应该是最出名的Python框架,GAE甚......
  • python小练习——图书管理系统(增加数据存储)
     上一次我们做了一个小的图书馆里系统,用来学习python基础部分的:函数、模块、列表、字典、循环、判断 现在我们在上一次的基础上增加一个功能,将写入系统的书籍存放起来......
  • Python3,2分钟掌握Doscoart库,你也能成为艺术家。
    1、引言小屌丝:鱼哥,最近在忙啥?小鱼:咱俩陌生了?小屌丝:何出此言?小鱼:你说的话又嘛意思呢?小屌丝:我的意思,最近看你这整理各种资料,貌似很忙的样子?小鱼:我平时不也这么忙嘛小......
  • python操作pandas的笔记
    importpandasaspddata={'name':['Alice','Bob','Charlie','David'],'age':[25,30,35,40],'gender':['F','M','M','M'......
  • Python中Index的用法
    1.Index常用于Python的List数据类型在Python中有一种数据类型叫作List数据类型。程序员口中和中文翻译过来都称之为List数据类型,而Index主要用于List数据类型中。Index......
  • 使用Python操作Mysql数据库(进阶)
    #-*-coding:utf-8-*-importloggingimportpymysqlfromrest_framework.responseimportResponselogger=logging.getLogger(__name__)#连接数据库def......