对自动化测试的几点思考(三)
在前面的两个文章中关于接口测试,自动化测试聊了很多,那今天就说下在自动化测试中的断言,在自动化测试中,没有断言的测试用例是无效的,这是我一直的想法,那么怎么样的断言是正确的,一个自动化测试用例增加了断言就可以完全的放心了吗?在自动化测试中,我感觉最可怕的不是测试用例的维护,以及它的编写,最可怕的是功能存在问题,而自动化测试用例执行后,结果竟然是PASS,这会导致很严重的后果和质疑。
既然说到自动化测试断言这部分,就以简单的例子来说明这点,就按UI级别的自动化测试来举例,案例是打开百度首页,验证title是否是“百度一下,你就知道”,见代码:
#!/usr/bin/env python
#coding:utf-8
import
unittestfrom
seleniumimport
webdriverclass
UITest
(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
tearDown
(self
):self
.driver.quit()def
test_baidu_title
(self
):title
=self
.driver.titleif
title
==u"
百度一下,你就知道
"
:"pass"
)else
:"fail"
)if
__name__ =="__main__"
:unittest.main(
verbosity
=2
)针对上面的代码,不管怎么执行,在自动化的测试报告中,该用例永远是pass的,在自动化测试的测试代码中,尽量少使用if这些判断的代码,自动化测试的结果很简单,要么是PASS,要么是FAIL,没有第三种情况,所以也就意味着断言一定要准确,不能出现的结果让人去猜或者是模棱两可的说不清楚,上面代码的问题就在于不管这个判断打印结果是pass还是fail,在自动化测试结果中,这个用例是pass的,不会因为打印的结果是fail,用例执行结果也是fail。另外需要注意的是在测试用例的断言中也不要使用try异常处理的方式,不能说因为执行失败了就去处理异常,如果代码执行失败就应该让失败,通过失败来定位是功能bug还是测试代码写的不对,针对if判断和try异常这些,可以放在对象层中,尽量避免在测试层中。对上面的代码进行修改,见修改后的代码:
#!/usr/bin/env python
#coding:utf-8
import
unittestfrom
seleniumimport
webdriverclass
UITest
(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
tearDown
(self
):self
.driver.quit()def
test_baidu_title
(self
):self
.assertEqual(self
.driver.title,
u"
百度一下,你就知道
"
)if
__name__ =="__main__"
:unittest.main(
verbosity
=2
)今天就先写到这,谢谢阅读!如您对我写的内容感兴趣,扫描如下二维码关注本人的微信公众号,谢谢!!!
- 心理测试:你的手指纹路有几个斗?准确测出你的命运与爱情
- 蒸鸡蛋也有诀窍,记住这几点,又嫩又滑,比例要看清楚哟
- 塔罗测试|未来一个月的感情状态是什么样,你想知道吗?
- 塔罗测试|看看命中注定的伴侣会在什么时候到来
- 心理测试:4个粮仓,哪个装粮最多?测你这辈子的财运有多旺
- 陈耘升:原油低位测试筑底明显,天然气蛮牛行情持续,今日双多思
- 情感测试:选一个水晶球,测试下半年你将收获什么
- 心理测试:你的爱情观,就藏在你去恋人家的路上
- 全球最牛游戏展大作多到数不过来!吓得国产游戏本周都不敢测试了
- 【世界杯女球迷测试卷】满分100,你女朋友能得多少分?