文档章节

Selenium3 + Python3自动化测试系列五——常用断言Assertion

o
 osc_a22drz29
发布于 2019/03/28 19:52
字数 1343
阅读 11
收藏 0

精选30+云产品,助力企业轻松上云!>>>

断言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 ()

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

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
web端自动化——Selenium3+python自动化(3.7版本)-chrome67环境搭建

前言 目前selenium版本已经升级到3.0了,网上的大部分教程是基于2.0写的,所以在学习前先要弄清楚版本号,这点非常重要。本系列依然以selenium3为基础。 一、selenium简介 Selenium 是用于测...

osc_6h5gkdny
2018/09/06
3
0
web端自动化——Selenium3+python自动化(3.7版本)-火狐62版本环境搭建

前言 目前selenium版本已经升级到3.0了,网上的大部分教程是基于2.0写的,所以在学习前先要弄清楚版本号,这点非常重要。本系列依然以selenium3为基础。 一、selenium简介 Selenium 是用于测...

osc_6h5gkdny
2018/09/06
2
0
21套高级软件测试,性能测试,功能测试,自动化测试,接口测试,移动端测试视频下载

软件测试系列之Java Selenium3自动化测试项目实战视频教程网盘下载 21套高级软件测试,性能测试,功能测试,自动化测试,接口测试,移动端测试,手机测试,WEB测试,渗透测试,测试用例设计,...

IT编程168
2018/12/22
4
0
21套自动化测试,接口测试,UFT高级测试,Android测试,Selenium3自动化测试,Python3 测试,Java接口测试项目实战视频课程下载

21套自动化测试,接口测试,UFT高级测试,Android测试,Selenium3自动化测试,Python3 测试,Java接口测试项目实战视频课程下载 21套高级软件测试,性能测试,功能测试,自动化测试,接口测试...

IT编程168
2018/12/22
10
0
21套自动化测试,接口测试,UFT高级测试,Android测试,Selenium3自动化测试,Python3 测试,Java接口测试项目实战视频课程下载

21套自动化测试,接口测试,UFT高级测试,Android测试,Selenium3自动化测试,Python3 测试,Java接口测试项目实战视频课程下载 21套高级软件测试,性能测试,功能测试,自动化测试,接口测试...

IT编程168
2018/12/22
17
0

没有更多内容

加载失败,请刷新页面

加载更多

面试必问之mysql基础

mysql存储引擎 如何选择mysql存储引擎 先得了解下各个存储引擎区别 功能 MylSAM MEMORY InnoDB Archive 功能 MylSAM MEMORY InnoDB Archive 存储限制 256TB RAM 64TB None 支持事务 No No Ye...

lipengxs
4分钟前
0
0
错误:将标头发送到客户端后无法设置标头 - Error: Can't set headers after they are sent to the client

问题: I'm fairly new to Node.js and I am having some issues. 我对Node.js相当陌生,遇到了一些问题。 I am using Node.js 4.10 and Express 2.4.3. 我正在使用Node.js 4.10和Express 2......

法国红酒甜
15分钟前
18
0
Spring中事务不生效的几种情况

数据库引擎不支持事务。 没有被Spring管理。 方法不是public的。 自身调用问题。 数据源没有配置事务管理器。 不支持事务。 异常被吃了。 异常类型错误。 事务失效类型: 数据库引擎不支持事...

九分石人
34分钟前
31
0
从Linux内核理解JAVA的NIO

前言 IO 可以简单分为磁盘 IO 和 网络 IO ,磁盘 IO 相对于网络 IO 速度会快一点,本文主要介绍 磁盘 IO ,网络 IO 下周写。 JAVA 对 NIO 抽象为 Channel , Channel 又可以分为 FileChannel ...

万古云霄
40分钟前
22
0
Material Design用在c#的wpf app中

官网:http://materialdesigninxaml.net/ 样式丰富 做网站和手机不粗 个人觉得不适合用在.net framework中,在.net core中应该大有作为。...

齐勇cn
40分钟前
28
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部