unittest是展开自动化测试的基础——这个框架很重要!

我们先自己写一个测试类:

1、被测试类 Widthget.py:

# coding: utf-8

class Widthget:
   def __init__(self, size=(10, 10)):
       self._size = size    def getSize(self):
       return self._size
   
   def reSize(self, width, height):
       if width < 0 or height < 0:
           raise ValueError, 'illegal size'
       self._size = (width, height)
           

2、测试类:

# coding: utf-8

from Widthget import Widthget
import unittest # 执行测试的类
class WidthgetTestCase(unittest.TestCase):    def setUp(self):
       self.width = Widthget()    def testSize(self):
       self.assertEqual(self.width.getSize(), (10, 10))
   
   def testResize(self):
       self.width.reSize(20, 20)
       self.assertEqual(self.width.getSize(), (20, 20))
   
   def tearDown(self):
       self.width = None # 构造测试集
def suite():
   tc = unittest.TestSuite()
   tc.addTest(Widthget("testSize"))
   tc.addTest(Widthget("testResize"))
   return tc
   
if __name__ == '__main__':
   # unittest.main()
   runner = unittest.TextTestRunner()
   runner.run(suite())

运行测试文件可以看到:

  • 优化1:

我们没必要单独写构造测试集的方法,也就是说我们可以直接将suite()方法放到if __name__=='__main__':里面:

if __name__ == '__main__':

    tc = unittest.TestSuite()
   tc.addTest(Widthget("testSize"))
   tc.addTest(Widthget("testResize"))    runner = unittest.TextTestRunner()
   runner.run()

执行测试文件,可以看到用例也是可以通过的。

  • 优化2

测试用例都以test开头命名,比如测试登录,用例就命名为testLogin,测试退出用例就命名为testLoginOut,上面我们写的例子之所以能这么顺利的就通过,主要原因就在于我的用例(testSize,testResize)都是以test开头的。这是unittest框架的默认规定。

接下来就是批量执行用例,这个我们在接口测试框架的时候介绍过,而且是专门介绍过,大家可以看一下

接口测试基础——第6篇unittest模块(一)

接口测试基础——第6篇unittest模块(二)

接口测试基础——第6篇unittest模块(三)

这些都是批量执行的方式。上面我们讲的这个只是个很low的例子,大家随便看一下就行了,接下来我会写一个具体的selenium框架,大家直接参考一下就可以。如果大家感兴趣,就需要回顾一下这些知识了:

接口测试基础——第一篇smtplib发送文字邮件

接口测试框架——第五篇-用例和运行

HTMLTestRunner显示用例打印内容

微信公众号搜索“自动化测试实战”或扫描下方二维码添加关注~~~

《selenium2 python 自动化测试实战》(21)——unittest单元测试框架解析的更多相关文章

  1. selenium2 python自动化测试实战(回归测试)

    selenium2 python自动化测试实战 最近接手商城的项目,针对后台测试,功能比较简单,但是流程比较繁多,涉及到前后台的交叉测试.在对整个项目进行第一轮测试完成之后,考虑以后回归测试任务比较重 ...

  2. 船长带你看书——《selenium2 python 自动化测试实战》(1)

    有很多selenium的教程,你没有从头看,当你看的时候已经很难跟上作者的节奏了.现在,你有机会再从头学一次了.从今天开始,船长会从最基本的知识开始,和大家一起学selenium.能不能跟着一起就看大 ...

  3. Selenium2+Python自动化测试实战

    本人在网上查找了很多做自动化的教程和实例,偶然的一个机会接触到了selenium,觉得非常好用.后来就在网上查阅各种selenium的教程,但是网上的东西真的是太多了,以至于很多东西参考完后无法系统的 ...

  4. 《selenium2 python 自动化测试实战》(20)——Selenium工具介绍

    (一)Selenium IDE Firefox的一个插件,有助于我们理解测试框架.在附加组件里搜索下载,一般搜的结果里前几个都不是,得点那个查看更多才行,找到这个: 安装以后浏览器工具栏会有: 安装好 ...

  5. 《selenium2 python 自动化测试实战》(19)——webdriver错误截图

    webdriver 提供错误截图函数 get_screenshot_as_file(),可以帮助我们跟踪 bug,在脚本无法继续执行时候, get_screenshot_as_file()函数将截取当 ...

  6. 《selenium2 python 自动化测试实战》(17)——几个cookies操作

    之前我们已经学过利用cookies跳过验证码登录了,那时候我们用的方法是add_cookie()方法,这里再给大家介绍两个,一般情况下我们用不到,了解一下就可以,而且如果真的用到的时候百度也很快的: ...

  7. 《selenium2 python 自动化测试实战》(7)——定位一组对象

    定位一组对象 定位一组对象——find_elements_by_...(),注意,这里是elements,复数.返回的结果是一个列表,我们取值的时候就要用列表取值的方式来获得自己想要的元素.需要注意的 ...

  8. 《selenium2 python 自动化测试实战》(4)——鼠标事件

    鼠标事件包含在ActionChains类中,导入时只需要: from selenium.webdriver.common.action_chains import ActionChains 导入类即可 ...

  9. 船长带你看书——《selenium2 python 自动化测试实战》(2)浏览器操作

    浏览器操作 # coding: utf-8 from selenium import webdriver from time import sleep driver = webdriver.Firef ...

随机推荐

  1. shell 数组【了解一下】

    数组编程 #!/bin/bash # array soft=( php mysql nginx ) # 输出第一个 echo ${soft[0]} # 输出所有 echo "This sof ...

  2. 使用Python操作memcache

    Python连接memcached的库有很多,处于简单以及高效的原则,最终选择了pymemcache, 优点 完全实现了memcached text协议 对于send/recv操作可以配置timeou ...

  3. 《Think in Java》(十七)容器深入研究

    阿西吧,这一章好长啊,感觉看了快一个月了吧!JDK 自带的容器框架真是很好很强大啊,这一章看得有点蒙蒙的,接下来还得去看看官方文档啊!

  4. WebBrowser提交submit后界面不刷新的解决办法

    一个Form里有一个WebBrowser和一个Button,在Button_Click里执行 htmlDocument=WebBrowser.Document得到当前document 当htmlDoc ...

  5. 我的json

    { "firstName":[ "xMan" ], "members":[ { "name":"X教授&quo ...

  6. UVA-11865 Stream My Contest (朱-刘 算法+二分)

    题目大意:有一张n个顶点,m条边的有向图,根节点为0.每条边有两个权值,一个是费用c,一个是长度b.问在总费用不超过cost的情况下选出若干条边,使得n个点连通时的边的最短长度的最大值是多少. 题目分 ...

  7. Linux命令nohup+screen 转

    如果想在关闭ssh连接后刚才启动的程序继续运行怎么办,可以使用nohup.但是如果要求第二天来的时候,一开ssh,还能查看到昨天运行的程序的状态,然后继续工作,这时nohup是不行了,需要使用scre ...

  8. ubuntu14.04 改变系统默认Python解释器

    今天刚安装了anaconda,摸索了一阵子,现做个相关记录. 虽然安装的时候,会通知你是否加入环境变量(加到.bashrc尾部),但是调用的解释器仍然是系统自带默认的Python2.7.6,我们在/r ...

  9. 关于js中的原型链的理解

    我们知道无论什么时候只要创建了一个函数,就会为该函数创建一个prototype属性,这个属性指向函数的原型对象,默认情况下所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性包 ...

  10. log4j 日志详解

    # 以下是rootLogger的配置,子类默认继承,但是子类重写下面配置=rootLogger+自己配置,我晕#输出到控制台 log4j.appender.console=org.apache.log ...