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进行单元测试的更多相关文章

  1. Python+selenium+unittest+HTMLTestReportCN单元测试框架分享

    分享一个比较基础的,系统性的知识点.Python+selenium+unittest+HTMLTestReportCN单元测试框架分享 Unittest简介 unittest是Python语言的单元测 ...

  2. Python必会的单元测试框架 —— unittest

    用Python搭建自动化测试框架,我们需要组织用例以及测试执行,这里博主推荐Python的标准库——unittest. unittest是xUnit系列框架中的一员,如果你了解xUnit的其他成员,那 ...

  3. Python+Selenium ----unittest单元测试框架

    unittest是一个单元测试框架,是Python编程的单元测试框架.有时候,也做叫做“PyUnit”,是Junit的Python语言版本.这里了解下,Junit是Java语言的单元测试框架,Java ...

  4. python模块详解 | unittest(单元测试框架)(持续更新中)

    目录: why unittest? unittest的四个重要概念 加载测试用例的三个方法 自动加载测试用例 忽略测试和预期失败 生成html测试报告 why unittest? 简介: Unitte ...

  5. Python中unittest采用不同的参数组合产生独立的test case

    我们在使用Python的unittest做自动化或者单元测试时,有时需要一个测试用例根据不同的输入.输出组合而执行多次,但是,unittest中一个用例只能有一组参数组合执行,如果采用循环的方式,在生 ...

  6. 使用python+requests+unittest实现接口自动化测试

    这两天一直在找直接用python做接口自动化的方法,在网上也搜了一些博客参考,今天自己动手试了一下. 一.整体结构 上图是项目的目录结构,下面主要介绍下每个目录的作用. Common:公共方法:主要放 ...

  7. python:unittest之跳过测试和预期失败的用例

    在利用单元测试框架执行测试用例的过程中,有时只需要执行一部分用例,或者跳过某些暂不需要执行的用例,python的unittest框架就内置这样的功能. 前面的博客介绍了unittest框架的测试用例加 ...

  8. Python之unittest测试代码

    前言 编写函数或者类时,还可以为其编写测试.通过测试,可确定代码面对各种输入都能够按要求的那样工作. 本次我将介绍如何使用Python模块unittest中的工具来测试代码. 测试函数 首先我们先编写 ...

  9. 在Python中进行自动化单元测试的教程

    From: https://www.jb51.net/article/64119.htm 一.软件测试 大型软件系统的开发是一个很复杂的过程,其中因为人的因素而所产生的错误非常多,因此软件在开发过程必 ...

随机推荐

  1. Error creating bean with name 'transactionManager'

    查看数据库是否连通,看错误的具体信息 看ssm配置文件是否被正确加载,上次我的错误是beans之类的错误,就是spring文件没有被加载,因为 而文件是applicationConfig.xml

  2. Citrix XenApp工作原理

    Citrix XenApp™作为一种Windows®应用交付系统,可在数据中心集中管理应用,并将应用按需交付给身处各地.使用各种设备的用户.利用集成的应用虚拟化技术,XenApp克服了传统应用部署方法 ...

  3. 用python优雅打开文件及上下文管理协议

    有次面试被问到如何优雅地打开一个文件?   那就是用with语句,调用过后可以自动关闭.   但是为什么使用with语句就可以自动关闭呢,原因就是上下文管理协议.   上下文管理协议:包含方法 __e ...

  4. python中subprocess模块

    subprocess  模块 subprocess称之为子进程,进程是一个正在进行的程序 子进程是由另一个正在运行的程序启动的程序,例如QQ聊天点击一个链接,打开了浏览器,那么浏览器称之为QQ的子进程 ...

  5. python入门 -- 学习笔记1

    学习资料:笨方法学Python 准备: 安装环境----请自行网络搜索(Windows安装很简单,和其他安装程序一样) 找一个自己习惯的编辑器(比如:sublime text 3) 创建一个专门的目录 ...

  6. IntelliJ IDEA2017 激活方法 最新的(亲测可用)

    IntelliJ IDEA2017 激活方法(亲测可用): 搭建自己的授权服务器,对大佬来说也很简单,我作为菜鸟就不说了,网上有教程. 我主要说第二种,现在,直接写入注册码,是不能成功激活的(如果你成 ...

  7. day37 异步回调和协程

    异步回调 """ 异步任务使用场景 爬虫 1.从目标站点下载网页数据 本质就是HTML格式字符串 2.用re从字符串中提取出你需要的数据 ""&quo ...

  8. Windows驱动开发VS2012 DDK/WDK的环境配置

    [开发Windows驱动的配置是很必要的,下文将详细介绍VS2012如何配置驱动开发环境] [转载] 以下部分内容是转载博客:http://blog.csdn.net/huangxy10/articl ...

  9. java基础 ---- 练习for循环

    -----   使用for循环打印图形 //打印矩形 public class Print { public static void main(String[] args) { for(int i=1 ...

  10. 一个域名下多个Vue项目

    公司写的网站要英文和中文的,所以就写了两个项目,都是用vue写的单页面项目,但是域名只有一个,所以就想把两个vue项目合并到一个域名下面.思考:vue的页面都是单页面应用,说白了就是一个index.h ...