20181023软件测试经验分享-app的Ui自动化测试 使用unittest框架的断言心得
目前app自动化测试脚本在用的是unittest单元测试框架,在基本完成用例设计后,开始考虑如何来做断言,(虽然学习一段时间的自动化,但用例基本不做断言,除了登录后的拿用户名验证登录的成功与否)。基础知识我就不做分享,分享下我目前的经验。
一)断言某些元素的属性值-assertEqual()
assertEqual:如两个值相等,则pass
assertEqual:如两个值不相等,则fail
self.assertEqual(4 + 5,9,‘The result is False’)
self.assertEqual(self.xin_find_element(By.ID, self.name_id).get_attribute('name'), self.DY_name[1])
我这样写,是断定 可以找到元素的!!!(为什么这么说,后面有分析)
二)断言某些元素存在与否-assertTrue()
assertTrue:判断bool值为True,则pass
assertTrue:判断bool值为False,则fail
self.assertTrue(4 + 5 == 9,“The result is False”)
但是网上有些教程推荐这儿来做 判断元素存在与否,写法:self.assertTrue(self.driver.find_elemnt_by_xx(‘xxxx’).XXXX)
XXXX 是 isEnable()检查元素是否被启用 isDisplay()检查元素是否可见
但是我不能保证 1.你断言这个元素是否需要等待,时间太短没来得及去找到 怎么办?
2.给个找不到的元素,实际这条用例的结果是 怎么样的?
答: 1.可以使用显式等待来做智能等待;
2.结果是 selenium.common.exceptions.NoSuchElementException。就是说你想要的元素没找到,给的结果不是断言的结果!!!
(个人理解)HTMLTestRunner生成的测试报告,有三个不同结果:通过(pass),失败(fail),错误(error)
python unintest单元测试框架提供了一整套内置的断言方法。
如果断言失败,则抛出一个AssertionError,并标识该测试为失败状态
如果异常,则当做错误来处理 注意:以上两种方式的区别
如果成功,则标识该测试为成功状态
三)断言:某些新界面的某元素是否存在,如果不存在就自动截图,如果存在,就断言通过
def duanyan_chazhaoyuansu(self, by, locator):
duanyan = True
try:
self.xin_find_element(by, locator)
print('找到元素,断言成功')
except:
self.driver.get_screenshot_as_file(
r'D:\xxxxxx\ScreenShot\screenshot_' + time.strftime('%Y%m%d_%H%M%S') + '.png')
duanyan = False
if duanyan is True:
self.assertTrue(duanyan, '断言错了,没找到元素')
else:
self.assertTrue(duanyan, '断言失败了,没找到元素')
xin_find_elemnt()使用显式等待;传入的by是BY common的By类;
这样写的好处是 如果元素找到了,直接print(‘找到元素,断言成功’),断言通过;如果元素没找到,自动截图,没能通过断言,提示msg=‘断言失败了,没找到元素’。
四)反面举例:聊天记录被清空,返回会话界面,查找聊天记录的元素,做断言
def test_03_d482k(self):
"""清空聊天记录"""
# 在设置里面 清空聊天记录 确定后 返回会话
self.wodehuodong()
self.xin_find_element(By.ID, self.wode_jinruqunliao_id).click()
self.xin_find_element(By.ID, self.wode_jinruqunliao_shezhi_id).click()
self.xin_find_element(By.ID, self.wode_jinruqunliao_shezhi_qingkong_id).click()
self.xin_find_element(By.ID, self.wode_jinruqunliao_shezhi_qingkong_queding_id).click()
self.xin_find_element(By.ID, self.wode_jinruqunliao_shezhi_fanhui_id).click()
duanyan = True
try:
self.xin_find_element(By.ID, 'message_chat_right_text_text')
self.driver.get_screenshot_as_file(
r'D:\xxxxx\ScreenShot\screenshot_' + time.strftime('%Y%m%d_%H%M%S') + '.png')
except:
duanyan = False
print('没找到元素,能清空聊天记录,断言成功了')
if duanyan is True:
self.assertFalse(duanyan, '断言失败了,找到元素,实际聊天记录还有未清空掉的')
else:
self.assertFalse(duanyan, '居然找到元素了!!!')
self.xin_print()
设置,选择清空聊天记录,确定后,返回聊天会话界面。
duanyan = True
try 去寻找元素(那个id是定位 聊天记录)
如果查找到,自动截图,开始断言,断言失败,msg=‘断言失败了,找到元素,实际聊天记录还有未清空掉的’
如果没找到,duanyan = False,直接print(‘没找到元素,能清空聊天记录,断言成功了’),断言成功
关于app的断言,目前就是这些体会,交流技术 欢迎+QQ153132336 zy