在说unittest之前,先说几个概念:

TestCase 也就是测试用例

TestSuite 多个测试用例集合在一起,就是TestSuite

TestLoader是用来加载TestCase到TestSuite中的

TestRunner是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息

先写一个简单的单元测试:

import unittest
# 1.定义一个测试类,类下面有测试方法
# 2.方法中调用assertEqual做校验
# 3.最后用unittest.main()运行所有测试用例 class My(unittest.TestCase):
def testa(self):
self.assertEqual(1,1) def kkk(self):#不是以test开头的方法不会被执行
self.assertEqual(1,2) def test_kkk2(self):
self.assertEqual(1,3) class My2(unittest.TestCase):
def test_kkk3(self):
'''这是kkk3的测试用例'''
self.assertEqual(1,1) def test_kkk4(self):
'''这是test4'''
self.assertEqual(1,2)
if __name__ =="__main__":
unittest.main() #unittest.main() 会找到你所有的测试用例,并将起全部运行 ===================================================
再来一个 单元测试2--会生成测试报告的单元测试
import unittest,HTMLTestRunner,xmlrunner

class My(unittest.TestCase):
def test_kkk(self):
self.assertEqual(1,1) def kkk(self): #不是以test开头的测试用例 不会被执行
self.assertEqual(1,2) def test_kkk2(self):
'''这是用例2''' #这是加用例的注释
self.assertEqual(1,2) class My2(unittest.TestCase):
def test_kkk3(self):
'''这是用例3''' #这是加用例的注释
self.assertEqual(2,2) if __name__ == '__main__':
# unittest.main() #unittest.main() 会找到你所有的测试用例,并将起全部运行
suite = unittest.TestSuite() #定义一个空的测试集合
suite.addTest(My('test_kkk2')) #导入单个测试用例
suite.addTest(unittest.makeSuite(My2)) #导入类下面的全部测试用例
# fw = open('report_kkk.html','wb') #二进制的意思,就是有时候保存一些图片或者文本文件的时候就用wb
# runner = HTMLTestRunner.HTMLTestRunner(stream=fw,title='kkk自动化测试报告',description='描述描述')
# runner.run(suite)
#----------下面这个是生成xml格式的测试报告的代码--------------
    # runner2 = xmlrunner.XMLTestRunner(output='.')  #点 代表当前目录
runner2 = xmlrunner.XMLTestRunner(output='report') #report 为指定目录名
runner2.run(suite)
这是单元测试2的report

下面是xml格式的测试报告--xml格式主要是个后面集成到jenkins用的

												

最新文章

  1. Android如何自定义dialog
  2. Daily Scrum Meeting ——SeventhDay
  3. IntelliJ Idea 常用快捷键列表
  4. Don't make a promise when you are in Joy. Don't reply when you are Sad.Don't take decisions when you are Angry.Think Twice.Act Wise.
  5. jahshaka 2.0 环境配置
  6. CentOS 6.5升级Python和安装IPython(亲测可用)
  7. [Shell]条件判断与流程控制:if, case, for, while, until
  8. poj-3056 http://poj.org/problem?id=3056
  9. Samba 'smbcacls'命令安全绕过漏洞
  10. 来自C++之父的建议
  11. 通过jQuery实时监听表格行数变化
  12. Linux下Qt Creator编辑器无法输入中文解决
  13. JQuery请求数据的方式
  14. Spring @ControllerAdvice @ExceptionHandler 全局处理异常
  15. 我觉得epoll和select最大的区别
  16. Redis快速起步及Redis常用命令大全
  17. Java启动参数及调优
  18. 【bzoj1086】[SCOI2005]王室联邦 树分块
  19. sass入门篇
  20. elasticsearch(5) curl 操作elasticsearch

热门文章

  1. [您有新的未分配科技点]数位DP:从板子到基础(例题 bzoj1026 windy数 bzoj3131 淘金)
  2. [POI2012]OKR-A Horrible Poem hash
  3. 【POJ2891】Strange Way to Express Integers(拓展CRT)
  4. 【bzoj1502】月下柠檬树
  5. selenium - webdriver - 截图方法get_screenshot_as_file()
  6. PID控制算法的C语言实现三 位置型PID的C语言实现
  7. nginx优化--gzip压缩与expire浏览器缓存
  8. SpringBoot项目中使用swagger2暴露resftul接口增加JWT来进行安全性验证
  9. libiop网络库数据结构和基础知识
  10. C++ string的那些坑