ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【selenium学习中级篇 -24】Unittest框架 - setUp与setUpClass的区别

2020-05-29 14:59:36  阅读:242  来源: 互联网

标签:24 baidu setUpClass driver Unittest flow import self browser


文章太长不看版:

setUp(): 每个测试case运行之前运行
tearDown(): 每个测试case运行完之后执行
setUpClass(): 必须使用 @classmethod装饰器, 所有case运行之前只运行一次
tearDownClass(): 必须使用 @classmethod装饰器, 所有case运行完之后只运行一次

详情版:

前面我们创建了一个测试用例,但真正的项目中,不可能只有一个测试用例,也不太可能只有一个测试页面,所以为了后续演示方便,我们新增加两条用例和一个测试页面test_baidu_01.py

 test_baidu.py

from Base import *
from PageObjects import *
from Flow import *
import unittest
import time


class TestBaiDuSearch(unittest.TestCase):

    def test_baidu(self):
        browser = BrowserEngine()  # 实例化browser类
        self.driver = browser.open_browser()
        self.baidu_flow = BaiduFlow(self.driver)  # 实例化流程类,要传入driver
        self.baidu_flow.open_baidu()  # 打开页面
        result = self.baidu_flow.baidu_know_search("selenium")  # 获取测试结果
        time.sleep(3)
        # 对比实际结果和预期结果
        self.assertEqual(result, "http://zhidao.baidu.com/question/147041701.html?fr=iks&word=selenium&ie=gbk")

    '''
    点击好123按钮,并判断打开的页面URL是否正确
    '''
    def test_baidu_hao123(self):
        browser = BrowserEngine()  # 实例化browser类
        self.driver = browser.open_browser()
        self.baidu_flow = BaiduFlow(self.driver)  # 实例化流程类,要传入driver
        self.baidu_flow.open_baidu()  # 打开页面
        self.baidu_flow.click_baidu_hao123()
        self.baidu_flow.switch_handle()
        hao_url = self.baidu_flow.get_page_url()
        self.assertEqual(hao_url,"https://www.hao123.com/")

test_baidu_01.py

from Base import *
from Flow import *
import unittest


class TestBaiDuButton(unittest.TestCase):

    '''
    点击“更多”按钮,并判断打开的页面URL是否正确
    '''
    def test_baidu_more(self):
        browser = BrowserEngine()  # 实例化browser类
        self.driver = browser.open_browser()
        self.baidu_flow = BaiduFlow(self.driver)  # 实例化流程类,要传入driver
        self.baidu_flow.open_baidu()  # 打开页面
        self.baidu_flow.click_baidu_more()
        self.baidu_flow.switch_handle()
        more_url = self.baidu_flow.get_page_url()
        self.assertEqual(more_url,"https://www.baidu.com/more/")

其中需要补充的基础函数自行补充了

这里面我们可以发现,在每个测试用例的方法中,都有去实例化driver,都有去实例化页面等,就略先复杂。所以,我们引入Unittest测试框架里面的setUp与setUpClass来做一些用例之前的初始化工作

以 test_baidu.py为例

from Base import *
from PageObjects import *
from Flow import *
import unittest
import time


class TestBaiDuSearch(unittest.TestCase):
# setUp(): 每个测试case运行之前运行 # tearDown(): 每个测试case运行完之后执行 # setUpClass(): 必须使用 @ classmethod装饰器, 所有case运行之前只运行一次 # tearDownClass(): 必须使用 @ classmethod装饰器, 所有case运行完之后只运行一次
   # 测试运行前的初始化 @classmethod def setUpClass(cls): browser = BrowserEngine() cls.driver = browser.open_browser() cls.baidu_flow = BaiduFlow(cls.driver)
# 测试运行完后退出浏览器 @classmethod def tearDownClass(cls): cls.driver.quit() def test_baidu(self): self.baidu_flow.open_baidu() result = self.baidu_flow.baidu_know_search("selenium") # 获取测试结果 time.sleep(3) # 对比实际结果和预期结果 self.assertEqual(result, "http://zhidao.baidu.com/question/147041701.html?fr=iks&word=selenium&ie=gbk") ''' 点击好123按钮,并判断打开的页面URL是否正确 ''' def test_baidu_hao123(self): self.baidu_flow.open_baidu() self.baidu_flow.click_baidu_hao123() self.baidu_flow.switch_handle() hao_url = self.baidu_flow.get_page_url() self.assertEqual(hao_url,"https://www.hao123.com/")

使用 setUp与setUpClass,tearDown和tearDownClass来完成用例运行前的初始化工作,比如driver的初始化,页面的实例化等,以及最后的浏览器退出等

本例中使用setUpClass,tearDownClass,则分别会在所有case运行前后各执行一遍。

setUp(): 每个测试case运行之前运行
tearDown(): 每个测试case运行完之后执行
setUpClass(): 必须使用 @ classmethod装饰器, 所有case运行之前只运行一次
tearDownClass(): 必须使用 @ classmethod装饰器, 所有case运行完之后只运行一次

标签:24,baidu,setUpClass,driver,Unittest,flow,import,self,browser
来源: https://www.cnblogs.com/ronyjay/p/12987414.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有