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, 根据原文增加了一些说明与注释,如有侵权,请原作者联系删除

最新文章

  1. aps.net cored 新概念
  2. 放在NSArray、NSDictionary等容器内的对象Item,Item中的property在程序运行过程中被无故释放
  3. asp.net 导入excel文件
  4. SQLite 函数大全
  5. grep使用多个查询条件--或
  6. JS:操作样式表1:行内样式
  7. C#利用Attribute实现简易AOP介绍 (转载)
  8. Delphi XE5教程6:单元的结构和语法
  9. Apache添加虚拟主机目录
  10. (转)关于c#中的事件
  11. 25+免费的Bootstrap HTML5网站模板
  12. Lucky7(容斥原理)
  13. java语言编写杨辉三角
  14. springMVC源码分析--HandlerMethodReturnValueHandler返回值解析器(一)
  15. Vue+koa2开发一款全栈小程序(6.个人中心)
  16. Arrays.asList() 的使用注意
  17. 解决远程连接mysql很慢的方法
  18. Python2 - 基础2 - 数据类型和模块
  19. JS Window对象操作思维导图
  20. 带复杂类的list,list<class>前台往后台传输

热门文章

  1. 游戏搭服自动化脚本shell
  2. echart 单选legend 并排序
  3. cadence 17.2 安装破解
  4. 解决find命令报错: paths must precede expression
  5. python note 06 编码方式
  6. [leetcode]29. Divide Two Integers两整数相除
  7. canvas(一) 基本线条绘制
  8. Linux下Mysql安装(tar安装)
  9. Kettle (5) - 获取 Web 数据
  10. Add-Migration : 无法将“Add-Migration”项识别为 cmdlet、函数、脚本文件或可运行程序的名称