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 一.软件测试 大型软件系统的开发是一个很复杂的过程,其中因为人的因素而所产生的错误非常多,因此软件在开发过程必 ...
随机推荐
- Django之如何预防csrf功能的方式 form提交与ajax提交
1. 什么是csrf认证: 主要是防止别人恶意登录你的账户信息用的: 2. csrf认证在django的实现方式: 分为两种, 一种是from表单提交的方式,另一种是ajax提交实现方式 前端: &l ...
- 解决HighChart开发遇到的2个问题
需求很简单,显示一条24小时的变化曲线 写完代码效果是只有一条直线,连时间轴都没有 第1个错误 Highcharts error #12 当通过要绘制的点超过1000个时就会报这个错,我按分钟计算间 ...
- Spring中,applicationContext.xml 配置文件在web.xml中的配置详解
一.首先写一下代码结构. 二.再看web.xml中的配置情况. <?xml version="1.0" encoding="UTF-8"?> < ...
- Mysql 提升大数据表的拷贝效率
工作上会经常遇到量级比较大的数据表 :场景: 该数据表需要进行alter操作 比如增加一个字段,减少一个字段. 这个在一个几万级别数据量的数据表可以直接进行alter表操作,但是要在一个接近1000 ...
- Python中操作Redis
一 Rdis基本介绍 redis是一个key-value存储系统.它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set -- ...
- webapi postman 415 错误
https://blog.csdn.net/Intangible_moon/article/details/80183121 猜测:如果后台接口使用的是[fromBody]标签的话,需要使用raw方式
- git连接远程客户端,命令行窗口上传文件
1.git官网,下载安装git客户端 2.配置全局的name和email,生成key git config --global user.name XXX git config --global us ...
- HTTP状态码之【整理篇】
=================================================================================== 状态码的职责:当客户端向服务器端 ...
- Log4j 日志组件
官网:https://logging.apache.org/log4j/2.x/ 使用 Log4j 的步骤: 第一步 引入 Log4j 的 jar 包 1. 直接下载 log4j-x.x.x.jar ...
- ABP Xunit单元测试 第五篇
1.创建如下的项目结构 public class TestName { public bool ValidateName(string Name) { if (Name == "yin&qu ...