unittest是python里面的单元测试框架

1 unittest 简介

1).先导入 unittest
2).用 help 函数查看源码解析
3).查看描述:
Python unit testing framework, based on Erich Gamma's JUnit and KentBeck's Smalltalk testing framework.
翻译:python 的单元测试框架,是基于 java 的 junit 测试框架

2 unittest使用

1).第一行是导入 unittest 这个模块
2).class 这一行是定义一个测试的类,并继承 unittest.TestCase 这个类
3).接下来是定义了四个测试 case 名称:testAdd 、 testMul、testMinus、testDiv
4).注释里面有句话很重要,这个要敲下黑板记笔记了: ## test method namesb b egin 'test*' -- 翻译:测试用例的名称要以 t test 开头
5).然后是断言 assert,这里的断言方法是 assertEqual-判断两个是否相等,这个断言可以是一个也可以是多个
6).if 下面的这个 unittest.main()是运行主函数,运行后会看到测试结果:

参考源码:

# coding:utf-8
import unittest
class IntegerArithmeticTestCase(unittest.TestCase): # test method namesb b egin 'test*'
def testAdd(self):
self.assertEquals((1+2), 3)
self.assertEquals((0+1), 1) def testMul(self):
self.assertEquals((0*5), 0)
self.assertEquals((10*5), 50) def testMinus(self):
result = 6-5
hope = 1
self.assertEquals(result, hope) def testDiv(self):
result = 7/2
hope = 3
self.assertEquals(result, hope) if __name__ == '__main__':
unittest.main()

* 注意:

当断言没有通过时,就会报错,例如将上面最后一个用例的期望结果改为hope=3.5,执行结果就会报错

最后运行结果,第四个是失败的,失败原因:AssertionError: 3 != 3.5
F.
=====================================================================
=
FAIL: testDivide (__main__.Test)
这里是测试除法
---------------------------------------------------------------------
-
Traceback (most recent call last):
File "D:/test/web-project/p.py", line 14, in testDivide
self.assertEqual(result, hope)
AssertionError: 3 != 3.5
---------------------------------------------------------------------
-
Ran 4 tests in 0.004s
FAILED (failures=1)

3 前置和后置

1).setUp:在写测试用例的时候,每次操作其实都是基于打开浏览器输入对应网址这些操作,这个就是执行用例的前置条件。
2).tearDown:执行完用例后,为了不影响下一次用例的执行,一般有个数据还原的过程,这就是执行用例的后置条件。
3).很多人执行完用例,都不去做数据还原,以致于下一个用例执行失败习惯不好。
4).前置和后置都是非必要的条件,如果没有也可以写 pass

完整案例:

# coding:utf-8
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
import time
import unittest
class Blog(unittest.TestCase):
# 前置操作
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.get("http://www.cnblogs.com/101718qiong/")
self.driver.maximize_window()
# 测试用例
def test_blog(self):
time.sleep(3)
result = EC.title_is(u'Silence&QH - 博客园')(self.driver)
print result
self.assertTrue(result)
# 后置操作
def tearDown(self):
self.driver.quit() if __name__ == "__main__":
unittest.main()

最新文章

  1. hadoop2.7.1 HA安装部署(转)
  2. ajax(通过jQuery实现)
  3. 移动端UC浏览器和QQ浏览器的部分私有meta属性
  4. web端测试和移动端测试的区别小记
  5. struts2--表单标签
  6. 关于Git中分支merge和rebase的适用场景及区别
  7. iOS开发网络篇—多线程断点下载
  8. mysql基础:mysql列类型--时间和日期
  9. c/c++再学习:查找算法了解
  10. MySQL 常用指令小结
  11. 1#Two Sum(qsort用法)
  12. 常用的几个CSS前端效果
  13. greendao3.2.0使用
  14. PHP如何安装redis扩展(Windows下)
  15. Python开发经验汇总
  16. CentOS7 下 配置Docker远程访问 与 windows下使用maven构筑Spring Boot 的 Docker镜像到远程服务端
  17. CNN中的池化层的理解和实例
  18. windows10下基于vs2015的 caffe安装教程及python接口实现
  19. lvm 新建一个vg 逻辑卷 配置启动
  20. MATLAB中TXT数据文件读取并写入元胞数组的方法与步骤

热门文章

  1. [Lua快速了解一下]Lua的函数
  2. SharpMap入门教程
  3. Android 工具类大全
  4. Partition--分区拆分和分区合并
  5. Ray tracing performance benchmark
  6. codeforces785E
  7. linux下发邮件
  8. centos6和ubuntu14搭建sftp
  9. 全局CSS的配置
  10. hasattr(object, name)