selenium小白学习笔记(4) - unittest框架之一

假设要进行百度首页功能的验证,测试用例必然不止一个,如何更加方便的组织和执行多个用例,如何方便的判断测试用例执行结果?unittest测试框架为我们提供了很多支持。先来个简单的例子吧。

测试脚本的主要内容:在百度首页中,点击【新闻】超链接,验证打开的网页是否为百度新闻页面。

一个简单的例子

import unittest
import time
from selenium import webdriver

class testBaidu(unittest.TestCase):
    def test_news(self):
        self.driver=webdriver.Chrome()
        self.url=r"http://www.baidu.com"  
        self.driver.get(self.url)
        time.sleep(3)
        self.driver.find_element_by_link_text("新闻").click() 
        time.sleep(3)
        self.assertEqual(self.driver.current_url,r"http://news.baidu.com/")
        self.driver.quit()

if __name__=="__main__":
    unittest.main()

脚本说明

1、导入unittest模块
2、新建测试类testBaidu,最最重要的是要继承unittest.TestCase
3、新建测试方法,名称要以test开头,如本例子中的test_news,一个方法类似于一个测试用例。
4、测试方法中,模拟打开网页和点击链接的操作。
5、测试方法中,使用unittest提供的assertEqual断言方法进行结果判断,当该方法中的两个参数值相等时,则结果为成功。比如本例子中,判断self.driver.current_url即获取到的当前网页的网址,是否与目标网址r"http://news.baidu.com/"一致。
6、添加unittest.main()方法,当脚本执行时,这个方法会自动查找所有以test开头的方法来执行。

执行结果

1、按照上面的例子,本次测试是通过的,assertEqual中判断当前网页的url与我们期望的url一致。python中显示的结果如下:
在这里插入图片描述
上面显示执行了1个test,执行结果为OK,即成功的。

2、我们将脚本中的assertEqual语句修改一下,修改为
self.assertEqual(self.driver.current_url,r"http://aaa.baidu.com/")
再次执行测试脚本。python中显示的结果如下:
在这里插入图片描述
显示执行了1个test,执行结果为Failed,即失败的。结果上方还显示了失败的具体原因为AssertError。

unittest组织多个测试用例

下面的例子是测试百度首页中的【新闻】和【hao123】两个超链接,是否能打开相对应的网页。脚本:

import unittest
import time
from selenium import webdriver

class testBaidu(unittest.TestCase):
    
    def setUp(self):
        self.driver=webdriver.Chrome()
        self.url=r"http://www.baidu.com"

    def test_news(self):
        self.driver.get(self.url)
        self.driver.find_element_by_link_text("新闻").click()
        time.sleep(3)
        self.assertEqual(self.driver.current_url,r"http://news.baidu.com/")

    def test_hao123(self):
        self.driver.get(self.url)
        self.driver.find_element_by_link_text("hao123").click()
        time.sleep(3)
        self.assertEqual(self.driver.current_url,r"https://www.hao123.com/")

    def tearDown(self):
        self.driver.quit()

if __name__=="__main__":
    unittest.main()

脚本说明一下与上面的例子中有区别的地方:
1、本例子中要执行两次测试,一个是打开百度新闻网页,另一个是打开hao123网页,所以新增了test_hao123方法。
2、使用了unittest框架中的setUp和tearDown方法,用于定义测试用例的前置和后置动作。例如本脚本中,将启动浏览器作为前置动作,将关闭浏览器作为后置动作。而test_news和test_hao123中不再有启动和关闭浏览器的语句。
3、当unittest.main()执行时,各语句的执行顺序为
1)setUp前置语句
2)test_hao123测试
3)tearDown()后置语句
4)setUp前置语句
5)test_news测试
6)tearDown()后置语句
即对于每个测试用例执行时,前置语句和后置语句都会执行一遍。请在执行时仔细观察是否是这样。
4、python中执行结果的显示:
在这里插入图片描述
5、有个奇怪的地方,为啥明明test_news在前,test_hao123在后,而测试执行顺序却是先执行的test_hao123呢?因为unittest.main()执行是按照测试方法的名称来排序的,不是语句的先后顺序。如果想要自己控制测试执行的先后顺序,下个章节会有方法解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值