断言Assertion

验证应用程序的状态是否同所期望的一致。

常见的断言包括:验证页面内容,如标题是否为X或当前位置是否正确,或是验证该复选框是否被勾选。

selenium 提供了三种模式的断言:assert 、verify、waitfor

  Assert 失败时,该测试将终止。

  Verify 失败时,该测试将继续执行,并将错误记入日显示屏 。也就是说允许此单个 验证通过。确保应用程序在正确的页面上

  Waitfor 用于等待某些条件变为真。可用于 AJAX 应用程序的测试。

  如果该条件为真,他们将立即成功执行。如果该条件不为真,则将失败并暂停测试。直到超过当前所设定的超过时间。

一般跟setTimeout时间一起使用。

一、常用断言

assertLocation(判断当前是在正确的页面)、

assertTitle(检查当前页面的 title 是否正确)、

assertValue(检查 input 的值, checkbox 或 radio,有值为”on”无为”off”)、

assertSelected(检查 select 的下拉菜单中选中是否正确)、

assertSelectedOptions(检查下拉菜单中的选项的是否正确)、

assertText(检查指定元素的文本)、

assertTextPresent(检查在当前给用户显示的页面上是否有出现指定的文本)、

assertTextNotPresent(检查在当前给用户显示的页面上是否没有出现指定的文本)、

assertAttribute(检查当前指定元素的属性的值)、

assertTable(检查 table 里的某个 cell 中的值)、

assertEditable(检查指定的 input 是否可以编辑)、

assertNotEditable(检查指定的 input 是否不可以编辑)、

assertAlert(检查是否有产生带指定 message 的 alert 对话框)、

verifyTitle (检查预期的页面标题)

verifyTextPresent (验证预期的文本是否在页面上的某个位置)

verifyElementPresent(验证预期的UI元素,它的HTML标签的定义,是否在当前网页上)

verifyText(核实预期的文本和相应的HTML标签是否都存在于页面上)

verifyTable(验证表的预期内容)

waitForPageToLoad(暂停执行,直到预期的新的页面加载)

waitForElementPresent (等待检验某元素的存在。为真时,则执行。)

验证和断言的区别:验证失败后不影响脚本的继续执行,断言失败后将停止脚本的执行。

二、异常类型

AssertionError:assert语句失败

AttributeError:试图访问一个对象没有的属性

IOError:输入输出异常,基本是无法打开文件

ImportError:无法引入模块或者包,基本是路径问题

IndentationError:语法错误,代码没有正确的对齐

IndexError:下标索引超出序列边界

KeyError:试图访问字典里不存在的键

KeyboadrInterrupt:Ctrl+c被按下

NameError:使用一个还未赋值对象的变量

SyntaxError:python代码逻辑语法错误,不能执行

TypeError:传入的对象类型与要求不符

UnboundLocalError:试图访问一个还未设置的全局变量,基本上是由于另有一个同名的全局变量,导致你以为在访问

ValueError:传入一个不被期望的值,即使类型正确

我们来看举个栗子,python3 +selenium3,验证标题是否包含‘百度一我’:

from selenium.webdriver import Chrome
import time
driver = Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
driver.get('https://www.baidu.com')
try:
assert u"百度一我" in driver.title
print("Assertion test pass")
except Exception as e:
print("Assertion test fail",format(e))
print(driver.title)
time.sleep(5)
driver.quit()

结果如下:

三、UnitTest框架中的断言

在unittest单元测试框架中,TestCase类提供了一些方法来检查并报告故障

assertEqual(a,b,[msg='测试失败时打印的信息']): 断言a和b是否相等,相等则测试用例通过。

assertNotEqual(a,b,[msg='测试失败时打印的信息']): 断言a和b是否相等,不相等则测试用例通过。

assertTrue(x,[msg='测试失败时打印的信息']): 断言x是否True,是True则测试用例通过。

assertFalse(x,[msg='测试失败时打印的信息']): 断言x是否False,是False则测试用例通过。

assertIs(a,b,[msg='测试失败时打印的信息']): 断言a是否是b,是则测试用例通过。

assertNotIs(a,b,[msg='测试失败时打印的信息']): 断言a是否是b,不是则测试用例通过。

assertIsNone(x,[msg='测试失败时打印的信息']): 断言x是否None,是None则测试用例通过。

assertIsNotNone(x,[msg='测试失败时打印的信息']): 断言x是否None,不是None则测试用例通过。

assertIn(a,b,[msg='测试失败时打印的信息']): 断言a是否在b中,在b中则测试用例通过。

assertNotIn(a,b,[msg='测试失败时打印的信息']): 断言a是否在b中,不在b中则测试用例通过。

assertIsInstance(a,b,[msg='测试失败时打印的信息']): 断言a是是b的一个实例,是则测试用例通过。

assertNotIsInstance(a,b,[msg='测试失败时打印的信息']): 断言a是是b的一个实例,不是则测试用例通过。

我们来小试一下牛刀:

class assertEqual1(unittest.TestCase):
def setUp(self):
number = input ("Enter a number:")
self.number = int (number) def test_case(self):
self.assertEqual (self.number, 10, msg='Your input is not 10!') def tearDown(self):
pass if __name__ == '__main__':
unittest.main ()

  这里我先简单介绍一下常用断言,具体的如何使用应具体应用而定。

Selenium3 + Python3自动化测试系列五——常用断言Assertion的更多相关文章

  1. Selenium3 + Python3自动化测试系列六——等待方式

    等待 一.等待是什么,为什么要等待 在做自动化测试,设计测试用例的时候,有时下一步的操作会依赖上一步的结果或者内容,上一步操作成功之后才能进行下一步操作等, 这时候,我们就需要使用等待,来判断上一步操 ...

  2. Selenium3 + Python3自动化测试系列一——安装Python+selenium及selenium3 浏览器驱动

    一.安装Python https://www.python.org/downloads/ 验证Python是否安装成功.打开Windows命令提示符(cmd),输入python,回车 注意:在安装的过 ...

  3. Selenium3 + Python3自动化测试系列二——selenium元素定位

    一.selenium元素定位 Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素 才能进行后续的自动化控制,我在这里将对selenium8种元 ...

  4. Selenium3 + Python3自动化测试系列四——鼠标事件和键盘事件

    一.鼠标事件 在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供. ActionChains 类提供了鼠标操作的常用方法. ActionChains 类的成 ...

  5. Selenium3 + Python3自动化测试系列三——控制浏览器操作

    控制浏览器操作 控制浏览器窗口大小 在测试过程中,我们在打开浏览器后,根据需求可自定义调整浏览器的尺寸大小.WebDriver提供了set_window_size()方法来设置浏览器的大小. 如果页面 ...

  6. Selenium3 + Python3自动化测试系列十二——窗口截图与关闭浏览器

    窗口截图 自动化用例是由程序去执行的,因此有时候打印的错误信息并不十分明确.如果在脚本执行出错的时候能对当前窗口截图保存,那么通过图片就可以非常直观地看出出错的原因.WebDriver提供了截图函数g ...

  7. Selenium3 + Python3自动化测试系列九——cookie操作

    cookie操作 一.Cookie操作 WebDriver提供了操作Cookie的相关方法,可以读取.添加和删除cookie信息. 使用方法: 1:get_cookies() ,获取cookie信息 ...

  8. Selenium3 + Python3自动化测试系列十——调用JavaScript代码

    调用JavaScript代码 一.调用JavaScript代码方法 Selenium在对浏览器操作时会有自动化代码中不稳定的部分,经常出错的部分,可以将这部分对网页元素进行操作的代码换成对应的Java ...

  9. Selenium3 + Python3自动化测试系列八——警告框处理和下拉框选择

    警告框处理 在WebDriver中处理JavaScript所生成的alert.confirm以及prompt十分简单,具体做法是使用 switch_to.alert 方法定位到 alert/confi ...

随机推荐

  1. js中定时器相关

    每三秒(3000 毫秒)弹出 "Hello" : setInterval(function(){ alert("Hello"); }, 3000); setIn ...

  2. 吓死baobao了

    早上远程连接服务器连不上,后面重启服务器,显示进入紧急修复模式:welcome to emergency mode!after logging in ,type “journalctl -xb” to ...

  3. CentOS7 安装可视化脚本安装包Webmin

    一.简介 Webmin是一个基于Web的Linux系统管理界面.你就可以通过图形化的方式设置用户账号.Apache.DNS.文件共享等服务. 二.安装 1.下载安装包到本地Windows系统 http ...

  4. Lua 常用遍历

    b = {} , do b[i] = i end -- method one for i, v in pairs(b) do print (i, v) end -- method two for i, ...

  5. 怎样去写线程安全的代码(Java)

    使用多线程就可能会存在线程安全的问题.很多 java 程序员对写多线程都很挣扎,或者仅仅理解那些是线程安全的代码,那些不是.这篇文章我并不是详述线程安全,详述同步机制的文章,相反我只是用一个简单的非线 ...

  6. kafka_shell操作

    单机版 开启进程: ./bin/kafka-server-start.sh config/server.properties 查看topic列表: ./bin/kafka-topics.sh --li ...

  7. [smarty] smarty 模板文件中进行字符串与变量的拼接

    // smarty 模板引擎 $arr_tribeLabelList["`$tribe_id`_"]

  8. 在Delphi中处理word文档与数据库的互联

    在Delphi中处理word文档与数据库的互联 ---- 目前,Delphi被越来越多的人选中作为MIS系统开发中的前台工具.在以Delphi为前台,一些大型数据库为后台的MIS系统中,图形的处理不可 ...

  9. Android-Kotlin-区间与for&List&Map简单使用

    区间与for: package cn.kotlin.kotlin_base04 /** * 区间与for */ fun main(args: Array<String>) { /** * ...

  10. easyUi DataGrid 显示日期列,时间为空也可,的正常显示,及普通居中列情况

    $('#tt').datagrid({                url: '@Url.Content("~/kpi/FindList")',                w ...