0
点赞
收藏
分享

微信扫一扫

unittest设置断言


unittest设置断言

COURSE ARRANGEMENT

断言

unittest单元测试框架中也提供断言的方式,用来判断用例是否执行成功。

unittest设置断言_单元测试

unittest常用断言   

unittest框架的TestCase类提供如下方法用于测试结果的判断:

方法

检查

assertEqual(a,b)

a == b

assertNotEqual(a,b)

a != b

assertTrue(x)

bool(x) is True

assertFalse(x)

bool(x) is False

assertIs(a,b)

a is b

assertIsNot(a,b)

a is not b

assertIsNone(x)

x is None

assertIsNotNone(x)

x is not None

assertIn(a,b)

a in b

assertNotIn(a,b)

a not in b

用法:

在用例执行之后,设置断言,检查用例是否执行通过,如:

import unittest
class Test(unittest.TestCase):
def test01(self):
'''
判断 a = b
'''
a = '111'
b = '1112'
self.assertEqual(a,b)
if __name__ == '__main__':
unittest.main()

执行成功返回的结果,返回“.”:

unittest设置断言_单元测试_02

若断言失败,页面直接返回对应的报错信息,用例执行不通过,状态为“F”:

unittest设置断言_自动化_03

也可以自定义报错信息:

import unittest
class Test(unittest.TestCase):
def test01(self):
'''
判断 a = b
'''
a = '111'
b = '1112'
self.assertEqual(b,a,msg='报错原因:{}没有包含{}'.format(a,b))
if __name__ == '__main__':
unittest.main()

执行报错信息如下,可以按照自己设置的报错信息打印,更有利于问题定位:

unittest设置断言_单元测试_04

结合百度的搜索页面,设置断言如下:

#导入Webdriver,UI自动化主要靠Webdriver实现
from selenium import webdriver
#导入时间模块
import time
#导入unittest单元测试模块
import unittest
#定义百度网页登录的测试用例集
class BaiduLogin(unittest.TestCase):
#定义Setup,用于初始化测试固件。本次设置的含义为在执行每个测试用例之前,打开浏览器,设置url为https://www.baidu.com
def setUp(self):
self.url = 'https://www.baidu.com/'
self.browser = webdriver.Chrome()
#定义teardown,用于销毁测试固件。本次设置的含义为在执行每个测试用例之后,关闭浏览器
#所以当前脚本的执行顺序为:
##setup-->test_query_001-->teardown-->setup-->test_login_002-->teardown
def tearDown(self):
self.browser.quit()

def test_001_query(self):
#创建一个名称为test_query_001的测试用例,在浏览器中打开百度首页
self.browser.get(self.url)
#将窗口最大化
self.browser.maximize_window()
#在搜索框中输入关键词“123”
self.browser.find_element_by_id('kw').send_keys('123')
#点击“百度一下”按钮
self.browser.find_element_by_id('su').click()
#print("查询成功")
#等待3S,查看页面返回结果
time.sleep(3)
#添加断言,搜索成功后页面会返回“百度为您找到相关结果约100,000,000个”
#定位后将该元素中包含的文字提取出来
a = self.browser.find_element_by_class_name('nums_text').text
#定义一个变量b,使它的内容包含部分页面搜索成功后返回的文字
b = "找到相关结果"
#断言,若a包含b,则用例执行成功,在结果中打印“搜索成功”
self.assertIn(b,a,msg='报错原因:{}没有包含{}'.format(a,b)')
print("搜索成功")
if __name__ == '__main__':
unittest.main()

用例通过的执行结果:

unittest设置断言_单元测试_05

通过前面的内容可以发现,加入了断言后,我们可以通过设置用例的预期结果来判断用例是否执行成功,让屏幕输入的结果更可控,也能够使我们更清晰地明白用例执行不通过的原因。相对比来说,未添加断言的用例简直不完整呢!

那么百度登录的断言要怎么写呢?

我知道你已经跃跃欲试了,那么赶快练习起来吧~~

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

unittest设置断言_软件测试_06

最后基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源【免费】。

unittest设置断言_unittest_07



举报

相关推荐

0 条评论