python 使用unittest进行单元测试
import unittest
import HTMLTestRunner """
Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作。 在说unittest之前,先说几个概念: TestCase 也就是测试用例 TestSuite 多个测试用例集合在一起,就是TestSuite TestLoader是用来加载TestCase到TestSuite中的 TestRunner是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息 生成测试报告:
1.HTMLTestRunner,这个模块需要自己安装,使用执行测试用例就会生成一个html的测试报告,里面会有每个测试用例的执行结果
2.HTMLTestRunner是Python标准库的unittest模块的扩展,无法通过pip安装;
3.执行命令: wget http://tungwaiyip.info/software/HTMLTestRunner.html 下载HTMLTestRunner.py 并将文件放到python2安装目录的Lib下,这个是python2版本.
4.HTMLTestRunner python3版本下载 访问 https://www.cnblogs.com/testyao/p/5658200.html 自行下载 并将文件放到python3安装目录的lib目录下
""" class MyTest(unittest.TestCase): # 必须继承自unittest.TestCase def tearDown(self): # 每个测试用例执行完之后,都会执行一下这个方法
print("测试完成\n") def setUp(self): # 每个测试用例执行之前都会执行这个方法
print("测试开始\n") @classmethod # 必须使用@classmethod装饰器, 所有test运行完后运行一次
def tearDownClass(cls):
print("所有测试完成\n") @classmethod
# 必须使用@classmethod装饰器,所有test运行前运行一次
def setUpClass(cls):
print("所有测试开始前\n") def test_a_run(self):
# 可以把需要执行的函数放到这里进行执行
self.assertEqual(1, 1) # 测试用例, 必须以test开头, 如果测试不通过,会报异常 def test_b_run(self):
self.assertEqual(2, 1) # 测试用例, 必须以test开头, 如果测试不通过,会报异常 # assertEqual(a, b) a == b
# assertNotEqual(a, b) a != b
# assertTrue(x) bool(x) is True
# assertFalse(x) bool(x) is False
# assertIsNone(x) x is None
# assertIsNotNone(x) x is not None
# assertIn(a, b) a in b
# assertNotIn(a, b) a not in b if __name__ == '__main__': # unittest.main() # 直接进行测试, 不生成测试报告, 可以在终端的输出看是否有异常,没有异常就说明测试通过 # 下面这段逻辑:需要生成测试报告才这样操作 # test_suite = unittest.TestSuite() # 创建一个测试集合 # test_suite.addTest(MyTest('test_a_run')) # 测试套件中添加单个测试用例 test_suite.addTest(unittest.makeSuite(MyTest)) # 使用makeSuite方法添加所有的测试方法 with open('unittest_res.html', 'wb') as f: # 打开一个保存结果的html文件 runner = HTMLTestRunner.HTMLTestRunner(stream=f, title='api测试报告', description='测试情况') # 生成执行用例的对象
runner.run(test_suite) def test_note_1():
"""
如果我们有很多个模块,每个模块下面都写了很多python文件,每个python文件里面都有测试用例,
那怎么把这个目录下的用例都执行了呢,就要先找到这个目录下的所有python文件,然后找到里面的测试用例,
逐个执行,代码如下:
"""
suite = unittest.TestSuite() # 生成创建测试套件 all_cases = unittest.defaultTestLoader.discover('.', 'test_*.py') # 第一个参数是路径 # 找到某个目录下所有的以test开头的Python文件里面的测试用例
for case in all_cases:
suite.addTests(case) # 把所有的测试用例添加进来 fp = open('res.html', 'wb')
fp.close()
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title='all_tests', description='所有测试情况') # 运行测试
runner.run(suite) # 把这些代码替换到入口函数中即可 """
我们在后续进行持续集成的时候,要让代码自动运行,就会用到Jenkins了,但是上面产生的测试报告都是html格式的,
Jenkins不认识,就在Jenkins里面显示不出来。那咱们就要产生一些Jenkins认识的测试报告,
Jenkins认识xml格式的报告,那咱们就产生xml格式的呗,就需要用一个新的模块,xmlrunner,
安装直接 pip install xmlrunner即可,代码如下:
"""
# 导入模块
import unittest
import xmlrunner class My(unittest.TestCase): def test1(self, a, b, c):
self.assertEqual(a + b, c) if __name__ == '__main__':
test_suite = unittest.TestSuite()
test_suite.addTest(unittest.makeSuite(My))
runner = xmlrunner.XMLTestRunner(output='report') # 指定报告放的目录
runner.run(test_suite)
原文地址: https://www.cnblogs.com/feng0815/p/8045850.html, 根据原文增加了一些说明与注释,如有侵权,请原作者联系删除
python 使用unittest进行单元测试的更多相关文章
- Python+selenium+unittest+HTMLTestReportCN单元测试框架分享
分享一个比较基础的,系统性的知识点.Python+selenium+unittest+HTMLTestReportCN单元测试框架分享 Unittest简介 unittest是Python语言的单元测 ...
- Python必会的单元测试框架 —— unittest
用Python搭建自动化测试框架,我们需要组织用例以及测试执行,这里博主推荐Python的标准库——unittest. unittest是xUnit系列框架中的一员,如果你了解xUnit的其他成员,那 ...
- Python+Selenium ----unittest单元测试框架
unittest是一个单元测试框架,是Python编程的单元测试框架.有时候,也做叫做“PyUnit”,是Junit的Python语言版本.这里了解下,Junit是Java语言的单元测试框架,Java ...
- python模块详解 | unittest(单元测试框架)(持续更新中)
目录: why unittest? unittest的四个重要概念 加载测试用例的三个方法 自动加载测试用例 忽略测试和预期失败 生成html测试报告 why unittest? 简介: Unitte ...
- Python中unittest采用不同的参数组合产生独立的test case
我们在使用Python的unittest做自动化或者单元测试时,有时需要一个测试用例根据不同的输入.输出组合而执行多次,但是,unittest中一个用例只能有一组参数组合执行,如果采用循环的方式,在生 ...
- 使用python+requests+unittest实现接口自动化测试
这两天一直在找直接用python做接口自动化的方法,在网上也搜了一些博客参考,今天自己动手试了一下. 一.整体结构 上图是项目的目录结构,下面主要介绍下每个目录的作用. Common:公共方法:主要放 ...
- python:unittest之跳过测试和预期失败的用例
在利用单元测试框架执行测试用例的过程中,有时只需要执行一部分用例,或者跳过某些暂不需要执行的用例,python的unittest框架就内置这样的功能. 前面的博客介绍了unittest框架的测试用例加 ...
- Python之unittest测试代码
前言 编写函数或者类时,还可以为其编写测试.通过测试,可确定代码面对各种输入都能够按要求的那样工作. 本次我将介绍如何使用Python模块unittest中的工具来测试代码. 测试函数 首先我们先编写 ...
- 在Python中进行自动化单元测试的教程
From: https://www.jb51.net/article/64119.htm 一.软件测试 大型软件系统的开发是一个很复杂的过程,其中因为人的因素而所产生的错误非常多,因此软件在开发过程必 ...
随机推荐
- XAMPP与本地Mysql冲突解决方法
1.更改regeit目录 https://blog.csdn.net/sinat_37633633/article/details/77645463 2.更改配置文件my.ini (1)https:/ ...
- python_05 可变类型与不可变类型、集合、字符串格式化
可变数据类型与不可变数据类型: 1.可变:列表,字典 2.不可变:字符串,数字,元组 访问顺序: 1.顺序访问:字符串,列表,元组 2.映射:字典 集合 由不同元素组成的集合,集合中是一组无序排列的可 ...
- js 生成手机图片并保存到相册
1.注意权限问题 2.调用HTML5+api 3.优化显示 4.注意兼容ios.Android
- React.js 学习笔记
React.js React.js 是时下最流行的前端 JavaScript 框架之一. 创建工程 # 安装 CLI $ npm install -g create-react-app # 创建新的应 ...
- npm突然找不到D:\nodejs\node_modules\npm\bin\npm-cli.js的解决方法
我在安装iView的时候就突然出现这个不正常工作,之后无论用npm进行任何操作,都会出现如下错误 真的是让人很着急啊,看了看环境配置,没问题,然后根据路径找错误,也不知道是哪里出了坑,上百度查,最多建 ...
- HTML前期学习总结
一.基本结构<!DOCTYPE html> //设置字符编码集格式<html> //<head> //网页头部 <title></title> ...
- 微信小程序---人脸识别(wx.startFacialRecognitionVerify)
1.由于人脸核验功能涉及到用户的敏感.隐私信息,因此调用此接口的业务方,需要满足一定的条件,申请小程序的人脸识别api.开通小程序后台的接口权限入口后,开发者可以登录mp.weixin.qq.com小 ...
- Selenium Webdriver元素定位的八种常用方式(转载)
转载自 https://www.cnblogs.com/qingchunjun/p/4208159.html 在使用selenium webdriver进行元素定位时,通常使用findElement或 ...
- MariaDB ColumnStore初探(1):安装、使用及测试
相信大家在对接BI数据报表部门有很深刻的体验,高大上的复杂SQL关联JOIN十几张表在InnoDB里跑起来,会让你酸爽到死.它的出现正是解决这个问题,DBA能不能轻松愉快地玩耍,就要靠它了,“神州行我 ...
- 带标签的循环语句、switch
今天继续更新,控制流程的剩余部分内容,带标签的循环语句中的continue/break 的使用方法,以及switch关键字的使用方法.例1:带标签的continue/break.package com ...