1023Appium app自动化测试经验分享-使用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是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

猜你喜欢

转载自blog.csdn.net/zyooooxie/article/details/83338330