• unittest框架里的常用断言方法:用于检查数据(12)


    5.unittest框架里的常用断言方法:用于检查数据。
    (1)assertEqual(x,y)  检查两个参数类型相同并且值相等。
    (2)assertTrue(x) 检查唯一的参数值等于True
    (3)assertFalse(x) 检查唯一的参数值等于False
    (4)assertIn(x,y) 检查x被包含在y里
    (5)assertAlmostEqual(x,y,z) 检查指定精度的两个浮点数相等,第三个参数z代表精确到小数点后几位(是可选参数)。
    6.selenium中获得界面上的实际数据并检查它们:
    (1)获得当前浏览器窗口里的当前网页的标题(self.driver.title)来检查,主要用于检查网页是否跳转到目标页。
    示例:
            # 检查跳转到标题包含“系统提示”的网页
            t1=self.driver.title
            self.assertIn("系统提示",t1)
            sleep(8)
            # 检查自动跳转到标题以“用户中心”开头的网页
            t2=self.driver.title
            b1=t2.startswith("用户中心")
            self.assertTrue(b1)
    (2)检查当前浏览器窗口里的当前网页源代码(driver.page_source)里包含某文本,一般用于网页出现时间较短,无法调查元素的定位条件时检查网页里的文本信息。
    示例:
            # 检查网页源代码里包含“用户名或密码错误”
            p1=self.driver.page_source
            self.assertIn("用户名或密码错误",p1)
    (3)检查指定元素里文本等于某值:定位到元素后,使用元素对象的text属性就可以获得该元素的开始和结束标记之间的文本,然后就可以检查文本是否正确。
    示例:
            # 检查默认用户名数据是否是“匿名用户”
            lie2=self.driver.find_element(By.XPATH,"//tr[1]/td[2]")
            t1=lie2.text# <td>匿名用户</td>
            self.assertEqual("匿名用户",t1)
    一、其他数据检查
    1.检查下拉列表里的默认被选中的选项:定位select标记的元素,然后封装Select类型对象,
    first_selected_option属性可以获得第一个被选中的选项(也就是默认选项),
    然后text属性获得option开始和结束标记之间的文本,最后就可以断言方法来检查该文本。
    示例:
    from selenium.webdriver.support.select import Select
            # 检查默认的出生日期里的年是1960
            y=self.driver.find_element(By.NAME,"birthdayYear")
            s1=Select(y)
            t3=s1.first_selected_option.text
            self.assertEqual("1960",t3)
    2.检查单选按钮或复选框是否是已经选中的状态:先定位单选按钮或复选框的元素,然后调用元素对象的
    is_selected方法(无参的方法),就可以接受到该方法返回来的状态值(布尔值),最后使用assertTrue检查
    该值代表已经选中,或使用assertFalse检查该值代表没有选中。
    示例:
            # 检查性别中“保密”单选按钮是默认已经选中的
            baomi=self.driver.find_element(By.NAME,"sex")
            b2=baomi.is_selected()
            self.assertTrue(b2)
    3.检查文本框里的内容:先定位到文本框后,然后使用页面元素对象的get_attribute("value")方法,参数是
    value代表html语法里的标记的value属性,得到这个属性值就代表文本框里的当前内容,然后就可以检查该文本内容。
    注意:文本框不能使用.text来获得内容,因为文本框的文本不是记录在开始和结束标记之间的。
    示例:
            # 检查电子邮件地址文本框里的内容是lisi@163.com
            dian=self.driver.find_element(By.NAME,"email")
            v1=dian.get_attribute("value")
            self.assertEqual("lisi@163.com",v1)
    4.检查弹出框弹出来(出现在网页上一层):使用Python语言的异常处理机制的语法,try……except……负责尝试
    做某件事,一旦抛出指定的异常就进行相应的异常处理。try语句块里写切换到弹出框的代码(self.driver.switch_to.alert),
    在except语句块里写NoAlertPresentException代表弹出框没有出现,设计一个函数用来判断是否弹出框提示框,当没有出现的时候,
    让它返回False,出现的话返回True,最后在测试函数中调用这个自定义函数,对返回值做是否等于True的检查。
    示例:
    from selenium.common.exceptions import NoAlertPresentException
        # 自定义函数:注意函数名不要以test开头,名称自定义
        # 函数名:is_alert_present
        # 功能:用于判断是否出现弹出框(弹出框是否弹出来)
        # 参数:无
        # 返回值:判断结果(bool类型)
        def is_alert_present(self):
            try:
                self.driver.switch_to.alert
            except NoAlertPresentException:
                return False
            return True
        def test_2(self):
            self.driver.get("http://localhost/upload/index.php")
            sou=self.driver.find_element(By.CLASS_NAME,"go")
            sou.click()
            sleep(1)
            # 检查弹出框是否弹出来
            b=self.is_alert_present()
            self.assertTrue(b)
    5.检查弹出框里的信息是否正确:切换到弹出框,然后对Alert型对象使用text属性值来做检查。
    建议:最后调用accept或dismiss函数把弹出框给关闭。
    示例:
            # 检查弹出框信息并关闭它
            a=self.driver.switch_to.alert
            self.assertEqual("请输入搜索关键词!",a.text)
            a.accept()
    
    练习:新建Python unit test类型的文件case8002.py,setUp里启动Firefox,tearDown关闭浏览器,test_1里打开ECShop前台首页,
    点击“登录”,点击“立即登陆”,检查弹出一个提示框,检查提示框里的文本内容中包含“用户名不能为空”和“登录密码不能为空”(做两个检查),点击“确定”。
    
    6.检查元素出现在网页里(能被定位到):try后尝试使用find_element来查找元素,在except后写NoSuchElementException,
    如果抛出此异常代表元素定位不到,如果没有抛出,代表元素可以被定位到。封装一个自定义函数is_element_present用于判断是否可以定位到元素,
    返回值是布尔值,True代表定位到,False代表未定位到,参数写一个定位条件(By.XX)和定位数据(str类型),在测试函数中调用此自定义函数,
    最后就可以检查元素出现。
    示例:
    from selenium.common.exceptions import NoAlertPresentException,NoSuchElementException
        # 判断元素是否可以被定位到(是否出现)
        # 参数:how   ---怎么定位?值是By.XXX
        #       what  ---用什么定位?值是str类型的
        # 返回值:布尔值,代表是否定位到
        def is_element_present(self,how,what):
            try:
                self.driver.find_element(how,what)
            except NoSuchElementException:
                return False
            return True
        def test_xxx(self):
            ……
            # 检查“上市日期”的元素出现
            b1=self.is_element_present(By.NAME,"attr[172]")
            self.assertTrue(b1)
    
    练习:case8002里新建test_3,打开ECShop前台登录页,输入正确用户名lisi和密码123456,
    点击“立即登陆”,检查“退出”这个元素出现(代表登录成功了),点击“退出”,检查“登录”这个元素出现(代表退出成功了)。
     
  • 相关阅读:
    奥数视频
    提车应该检查哪?4S店都怕你检查这4个“雷区”,别等后悔才知道
    乒乓球拍子和套胶选择
    2018天津英华国际学校初中报名指南
    水瓶座出生日期是几月几号到几月几号
    乒乓球 世锦赛
    鸡蛋羹要怎么蒸才会更嫩?秘诀在这里
    家庭理财方法:知道这7个定律可以帮你赚更多钱!
    要知道股市有“三底”,估值底、政策底、市场底!
    DbMigration使用方法
  • 原文地址:https://www.cnblogs.com/guog1/p/14155057.html
Copyright © 2020-2023  润新知