转载:http://www.wtoutiao.com/p/y40oyZ.html

自动化的测试中,对于每个单独的case来说,一个case的执行结果中,必然会有期望结果与实际结果,来判断该case是通过还是失败,在unittest的库中提供了大量的实用方法来检查预期值与实际值,来验证case的结果,一般来说,检查条件大体分为等价性,逻辑比较以及其他,如果给定的断言通过,测试会继续执行到下一行的代码,如果断言失败,对应的case测试会立即停止或者生成错误信息(一般打印错误信息即可),但是不会影响其他的case执行。

unittest的单元测试库提供了标准的xUnit断言方法,一下列出了经常使用到的(详细信息见官方的unittest库资料):

一、assertEqual()

assertEqual(a,b)来验证a是不是等价于b,如果比较值不相等,就会失败,下面已测试案例来验证下,测试百度的title,来引用assertEqual(),见测试脚本:

#coding:utf-8

from seleniumimport webdriver

importunittest,sys,time

reload(sys)

sys.setdefaultencoding('utf-8')

classBaiduTest(unittest.TestCase):

def setUp(self):

self.driver=webdriver.Firefox()

self.driver.maximize_window()

self.driver.get('http://www.baidu.com')

self.driver.implicitly_wait(30)

def testTitle(self):

self.assertEqual(u'百度一下,你就知道',self.driver.title)

def tearDown(self):

self.driver.quit()

@staticmethod

def suite():

suite=unittest.TestSuite(unittest.makeSuite(BaiduTest))

return suite

if__name__=='__main__':

unittest.TextTestRunner(verbosity=2).run(BaiduTest.suite())

我在测试用例testTitle写的会执行成功,因为二个值比较的时候是相等的,如果二个值不相等,一般在结果中会打印出来,如把testTitle测试用例修改下,见修改后的代码:

def testTitle(self):

self.assertEqual(u'百度一下,你就知',self.driver.title)

现在的测试用例代码二个值比较不相等的,我们见如下的执行后的结果截图,它会显示详细的错误:

二、assertNoEqual()

assertNotEqual(a,b),a,b二个值比较,如果是相等,测试会失败,二个值比较不相等,测试会成功,见如下的测试脚本:

#coding:utf-8

from seleniumimport webdriver

import unittest,sys,time

reload(sys)

sys.setdefaultencoding('utf-8')

classBaiduTest(unittest.TestCase):

def setUp(self):

self.driver=webdriver.Firefox()

self.driver.maximize_window()

self.driver.get('http://www.baidu.com')

self.driver.implicitly_wait(30)

def testTitle(self):

self.assertNotEqual(u'百度一下,你就知',self.driver.title)

def tearDown(self):

self.driver.quit()

@staticmethod

def suite():

suite=unittest.TestSuite(unittest.makeSuite(BaiduTest))

return suite

if__name__=='__main__':

unittest.TextTestRunner(verbosity=2).run(BaiduTest.suite())

三、assertTure()

assertTrue(a==b)是bool值的比较,期望结果是true,见测试百度title的测试用例:

#coding:utf-8

from seleniumimport webdriver

importunittest,sys,time

reload(sys)

sys.setdefaultencoding('utf-8')

class BaiduTest(unittest.TestCase):

def setUp(self):

self.driver=webdriver.Firefox()

self.driver.maximize_window()

self.driver.get('http://www.baidu.com')

self.driver.implicitly_wait(30)

def testTitle(self):

self.assertTrue(u'百度一下,你就知道'==self.driver.title)

def tearDown(self):

self.driver.quit()

@staticmethod

def suite():

suite=unittest.TestSuite(unittest.makeSuite(BaiduTest))

return suite

if__name__=='__main__':

result=unittest.TextTestRunner(verbosity=2).run(BaiduTest.suite())

sys.exit(not result.wasSuccessful())

四、assertFalse()

assertFalse(a==b)正好与assertTrue()相反,二个值比较不==的时候,测试用例就执行通过,见如下的测试代码:

#coding:utf-8

from seleniumimport webdriver

importunittest,sys,time

reload(sys)

sys.setdefaultencoding('utf-8')

classBaiduTest(unittest.TestCase):

def setUp(self):

self.driver=webdriver.Firefox()

self.driver.maximize_window()

self.driver.get('http://www.baidu.com')

self.driver.implicitly_wait(30)

def testTitle(self):

self.assertFalse(u'百度一下,你就知'==self.driver.title)

def tearDown(self):

self.driver.quit()

@staticmethod

def suite():

suite=unittest.TestSuite(unittest.makeSuite(BaiduTest))

return suite

if__name__=='__main__':

result=unittest.TextTestRunner(verbosity=2).run(BaiduTest.suite())

sys.exit(notresult.wasSuccessful())

unittest提供了很多关于断言的方法,但是一般经常使用的,也就是介绍的这几个,但是我一般建议使用assertEqual(),它即使失败,打印的错误详细会更加详细,有利于尽快的修复代码和修改错误的测试用例。当然,这仅仅是本人的建议。

转载于:https://www.cnblogs.com/zyp1/p/6018663.html

unittest测试驱动之断言(四)相关推荐

  1. python+selenium+unittest测试框架1-unittest单元测试框架和断言

    unittest单元测试框架和断言 一.unittest单元测试框架简介 1.导入unittest模块 import unittest 2.定义测试类 class Login(unittest.Tes ...

  2. 【07节】Python3+Selenium4自动化 unittest 测试框架详解

    文章目录 1.unittest 框架介绍 2.创建单元测试步骤 3.unittest 模块介绍 3.1 TestCase 类 3.1.1 TestCase 类常用方法: 3.1.2 TestCase ...

  3. 简单的11步在Laravel中实现测试驱动开发

    测试驱动开发(英语:Test-driven development,缩写为TDD)是一种软件开发过程中的应用方法,由极限编程中倡导,以其倡导先写测试程序,然后编码实现其功能得名. 下文是我在Mediu ...

  4. 基于Python的接口自动化unittest测试框架和ddt数据驱动详解

    引言 在编写接口自动化用例时,我们一般针对一个接口建立一个.py文件,一条接口测试用例封装为一个函数(方法),但是在批量执行的过程中,如果其中一条出错,后面的用例就无法执行,还有在运行大量的接口测试用 ...

  5. 测试驱动的面向对象软件开发(china-pub首发)

    测试驱动的面向对象软件开发(china-pub首发) 基本信息 作者: (美)Steve FreemanNat Pryce  译者: 王海鹏 丛书名: 开发人员专业技术丛书 出版社:机械工业出版社 I ...

  6. C++ 测试驱动开发

    看到一篇非常好的C++测试驱动开发文章,这里转载下. 测试驱动开发(TDD)背景及综述 测试驱动开发是 Kent 提出的一种新的软件开发流程,现在已广为人知,这种开发方法依赖于极短重复的开发周期,面对 ...

  7. 面向 C++ 的测试驱动开发

    测试驱动开发(TDD)背景及综述 测试驱动开发是 Kent 提出的一种新的软件开发流程,现在已广为人知,这种开发方法依赖于极短重复的开发周期,面对开发需求,开发人员要先开发代码测试用例,这些代码实现的 ...

  8. unittest 测试框架

    文章目录 一.unittest测试框架 1.测试固件 1.1 setUp() 1.2 tearDown() 2.unittest 基本使用 3.测试套件(suit) 3.1 测试用例执行顺序 3.2 ...

  9. 测试驱动开发 测试前移_测试驱动的开发可能看起来是工作的两倍-但无论如何您都应该这样做...

    测试驱动开发 测试前移 by Navdeep Singh 通过Navdeep Singh 测试驱动的开发可能看起来是工作的两倍-但无论如何您都应该这样做 (Test-driven developmen ...

最新文章

  1. PHP clone() 函数克隆对象
  2. sencha touch 组件选择器getCmp和ComponentQuery.query()的效率解析
  3. C#异步编程看这篇就够了
  4. 创建自已的sql函数
  5. python用线性回归预测股票价格
  6. 前端开发大师修炼指南
  7. Python计算数组的n位全排列(permutations的使用)
  8. C语言程序设计第四次作业
  9. 如何使用win10自带的录屏工具录制视频
  10. 深度 | 面目全非自动化
  11. (转)原始图像数据和PDF中的图像数据
  12. HTML5期末大作业:美食网站设计——餐饮美食-咖啡(5页) HTML5网页设计成品_学生DW静态食品网页设计_web课程设计网页制作
  13. Mac运行pyinstaller打包exe 提示 command not found的终极解决办法!
  14. GlusterFS探究(一): dht,afr,fuse, mgmt 层 几个问题总结
  15. Winform从入门到精通(41)——FileSystemWatcher(史上最全)
  16. 中国计算机协会(CCF)
  17. python出错文件_python保存文件出错怎么解决?
  18. java枚举和容器(一)
  19. css实现一个3D转动的骰子(附GIF效果图)
  20. Linux获得webinf路径,Linux系统快速定位web路径方法

热门文章

  1. OrmLite-更符合面向对象的数据库操作方式
  2. uni-App快速开发一个安卓应用
  3. LabVIEW通讯-TCP
  4. 配置clion用于stm32开发
  5. WinAPI入门: 第一个标准Win32窗口程序 [改进详细注释版]
  6. 友元(友元函数、友元类、类成员函数的友元)
  7. python 写文件的疑问
  8. CLion等JetBrains IDE学生认证免费使用流程
  9. CISSP 第五章 物理和环境安全
  10. mac Axure RP 8 授权码 以及汉化