断言、检查点相关函数方法

 assert*():一些断言方法:在执行测试用例的过程中,最终用例是否执行通过,是通过判断测试得到的实际结果和预期结果是否相等决定的

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

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

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

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

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

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

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

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

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

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

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

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

 示例:

复制代码
#导入unittest模块
import unittest

class Login(unittest.TestCase):
    def setUp(self):
        u'''没有前置条件可以写pass'''
        print("开始执行")
        # pass
    def test01(self): #测试用例必须以test开头
        print("执行测试用例01")
        result = '1'
        self.assertTrue(result) #断言result是不是True
    def test02(self):#判断两个参数是否相等
        print("执行测试用例02")
        result1 = '1'
        result2 = '1'
        self.assertEqual(result1,result2,msg="%s不等于%s"%(result1,result2))
    def test03(self):#判断两个参数是否不相等
        print("执行测试用例03")
        result1 = '1'
        result2 = '2'
        self.assertNotEqual(result1,result2,msg="%s等于%s"%(result1,result2))
    def test04(self):#判断一个参数是否包含另一个参数
        print("执行测试用例04")
        result1 = '1'
        result2 = '21'
        self.assertIn(result1,result2,msg="%s不包含%s"%(result2,result1))
    def test05(self):#判断一个参数是否不包含另一个参数
        print("执行测试用例05")
        result1 = '1'
        result2 = '2'
        self.assertNotIn(result1,result2,msg="%s包含%s"%(result2,result1))
    def test06(self): #测试一个参数是否为真
        print("执行测试用例06")
        result = '1'
        self.assertTrue(result,msg="%s不是True"%result)
    def test07(self):#判断一个参数是否不包含另一个参数
        print("执行测试用例07")
        result = ''
        self.assertFalse(result,msg="%s不是False"%(result))
    def test08(self):#判断一个参数是否不包含另一个参数
        print("执行测试用例08")
        result = None
        self.assertIsNone(result,msg="%s不是None"%(result))
    def test09(self):#判断一个参数是否不包含另一个参数
        print("执行测试用例09")
        result = '123'
        self.assertIsNotNone(result,msg="%s是None"%(result))
    def tearDown(self):
        u'''没有后置条件可以写pass'''
        print("结束...")
        # pass
if __name__ == '__main__':
    unittest.main()
复制代码

 

 

检查点

assertEqual、assertNotEqual

assertEqual(actv,expv,"如果断言失败提示信息")

self.assertEqual(self.driver.find_element_by_id('com.boohee.secret:id/tv_title').text,u'超模25','切到超模25tab失败')

 

assertTrue、assertFalse

assertTrue:判断bool值为True,则pass 

assertFalse:判断bool值为False,则Pass 

self.assertTrue(表达式或值,“失败提示信息”)

self.assertTrue(self.find_element_by_id('com.boohee.secret:id/btn_login').is_enabled(),'未输密码登录按钮为不可点状态,Fail')

 

assertIsNotNone、assertIsNone

assertIsNone:不存在,则pass 

assertIsNotNone:存在,则pass 

self.assertIsNotNone(self.driver.find_element_by_id('com.boohee.secret:id/tv_edit_profile'),'无编辑资料按钮,登录失败,Fail')

 

断言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:传入一个不被期望的值,即使类型正确

 

例子如下python2.7+selenium3.11.0:

# coding=utf-8
import time
from selenium import webdriver

driver = webdriver.Firefox()
driver.maximize_window()
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
截图如下:


 

转载于:https://www.cnblogs.com/lp475177107/p/11308917.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值