unittest测试驱动之断言(四)
转载: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测试驱动之断言(四)相关推荐
- python+selenium+unittest测试框架1-unittest单元测试框架和断言
unittest单元测试框架和断言 一.unittest单元测试框架简介 1.导入unittest模块 import unittest 2.定义测试类 class Login(unittest.Tes ...
- 【07节】Python3+Selenium4自动化 unittest 测试框架详解
文章目录 1.unittest 框架介绍 2.创建单元测试步骤 3.unittest 模块介绍 3.1 TestCase 类 3.1.1 TestCase 类常用方法: 3.1.2 TestCase ...
- 简单的11步在Laravel中实现测试驱动开发
测试驱动开发(英语:Test-driven development,缩写为TDD)是一种软件开发过程中的应用方法,由极限编程中倡导,以其倡导先写测试程序,然后编码实现其功能得名. 下文是我在Mediu ...
- 基于Python的接口自动化unittest测试框架和ddt数据驱动详解
引言 在编写接口自动化用例时,我们一般针对一个接口建立一个.py文件,一条接口测试用例封装为一个函数(方法),但是在批量执行的过程中,如果其中一条出错,后面的用例就无法执行,还有在运行大量的接口测试用 ...
- 测试驱动的面向对象软件开发(china-pub首发)
测试驱动的面向对象软件开发(china-pub首发) 基本信息 作者: (美)Steve FreemanNat Pryce 译者: 王海鹏 丛书名: 开发人员专业技术丛书 出版社:机械工业出版社 I ...
- C++ 测试驱动开发
看到一篇非常好的C++测试驱动开发文章,这里转载下. 测试驱动开发(TDD)背景及综述 测试驱动开发是 Kent 提出的一种新的软件开发流程,现在已广为人知,这种开发方法依赖于极短重复的开发周期,面对 ...
- 面向 C++ 的测试驱动开发
测试驱动开发(TDD)背景及综述 测试驱动开发是 Kent 提出的一种新的软件开发流程,现在已广为人知,这种开发方法依赖于极短重复的开发周期,面对开发需求,开发人员要先开发代码测试用例,这些代码实现的 ...
- unittest 测试框架
文章目录 一.unittest测试框架 1.测试固件 1.1 setUp() 1.2 tearDown() 2.unittest 基本使用 3.测试套件(suit) 3.1 测试用例执行顺序 3.2 ...
- 测试驱动开发 测试前移_测试驱动的开发可能看起来是工作的两倍-但无论如何您都应该这样做...
测试驱动开发 测试前移 by Navdeep Singh 通过Navdeep Singh 测试驱动的开发可能看起来是工作的两倍-但无论如何您都应该这样做 (Test-driven developmen ...
最新文章
- PHP clone() 函数克隆对象
- sencha touch 组件选择器getCmp和ComponentQuery.query()的效率解析
- C#异步编程看这篇就够了
- 创建自已的sql函数
- python用线性回归预测股票价格
- 前端开发大师修炼指南
- Python计算数组的n位全排列(permutations的使用)
- C语言程序设计第四次作业
- 如何使用win10自带的录屏工具录制视频
- 深度 | 面目全非自动化
- (转)原始图像数据和PDF中的图像数据
- HTML5期末大作业:美食网站设计——餐饮美食-咖啡(5页) HTML5网页设计成品_学生DW静态食品网页设计_web课程设计网页制作
- Mac运行pyinstaller打包exe 提示 command not found的终极解决办法!
- GlusterFS探究(一): dht,afr,fuse, mgmt 层 几个问题总结
- Winform从入门到精通(41)——FileSystemWatcher(史上最全)
- 中国计算机协会(CCF)
- python出错文件_python保存文件出错怎么解决?
- java枚举和容器(一)
- css实现一个3D转动的骰子(附GIF效果图)
- Linux获得webinf路径,Linux系统快速定位web路径方法