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. 手机端页面自适应解决方案—rem布局(进阶版,附源码示例)

    转自:https://segmentfault.com/a/1190000007350680 一年前笔者写了一篇 <手机端页面自适应解决方案—rem布局>,意外受到很多朋友的关注和喜欢.但 ...

  2. IdentityServer4在Asp.Net Core中的应用(一)

    IdentityServer4是一套身份授权以及访问控制的解决方案,专注于帮助使用.Net 技术的公司为现代应用程序建立标识和访问控制解决方案,包括单点登录.身份管理.授权和API安全. 下面我将具体 ...

  3. C# SQLite写入和读取DateTime类型

    很简单 1.不要相信网上大部分人说的话,比如存到int里 (ps:版本差距知道吗?) 2.nuget包下载最新版的sqlite 3.SQLite支持DateTime类型(图形化工具不会给提示无视它), ...

  4. Linux运维第二天:安装虚拟机软件及RHEL7.2 64位系统

    第一步:安装虚拟机 一路默认就行啦(还是要改下安装路径,嘿嘿) 第二步:安装RHEL7.2 64位系统 1.新建一个虚拟机 典型和自定义随便选(最后都可以调的) 一般大婶都喜欢选自定义(自己可以设置的 ...

  5. MySQL相关问题总结

    希望此贴能够将MySQL安装周围的问题总结清楚,也免得自己再遇到问题时而不知所措.本帖中所有关于MySQL的问题均涉及到两个平台:Ubuntu 和 Windows(本人没有Mac) 问题1:MySQL ...

  6. 【待填坑】ajax问题

    原生xhr怎么写? 怎么处理回调? 问:http状态码常见有哪些? 问:302是啥?304是啥?什么时候会返回304?你刚刚说浏览器缓存,具体缓存机制是怎么样的? 问:你刚刚说的是发起一个get请求, ...

  7. Java复习8.多线程

    Java复习8 多线程知识 20131007 前言: 在Java中本身就是支持多线程程序的,而不是像C++那样,对于多线程的程序,需要调用操作系统的API 接口去实现多线程的程序,而Java是支持多线 ...

  8. 使用Unity创建塔防游戏(Part3)—— 项目总结

    之前我们完成了使用Unity创建塔防游戏这个小项目,在这篇文章里,我们对项目中学习到的知识进行一次总结. Part1的地址:http://www.cnblogs.com/lcxBlog/p/60759 ...

  9. Django之model操作(续)

    Django中的源码续 ################################################## # PUBLIC METHODS THAT RETURN A QUERYS ...

  10. mac下webstorm添加scss watcher

    一.前提条件: 1.安装ruby,如果我没记错的话,mac自带ruby,终端输入 ruby -v ,回车,如果显示ruby的版本号,则说明ruby环境已经安装好了.如果没有,自行安装ruby.例如我的 ...