zoukankan      html  css  js  c++  java
  • Python+Selenium框架版(六)- 一个类文件多个测试方法情况下测试固件的写法

      目标:在同一个类中,多个测试函数时候,测试固件如何写。

      首先,我们先看一下如果存在两个测试函数的时候,程序是怎么执行的

    test1.py

    import time
    import unittest
    from framework.browser_engine import BrowserEngine
    from pageobjects.baidu_homepage import HomePage
    
    class BaiduSearch(unittest.TestCase):
        def setUp(self):
            """
            测试固件的setUp()代码,主要是测试的前提工作
            :return:
            """
            browse = BrowserEngine(self)
            self.driver = browse.open_browser(self)
    
        def tearDown(self):
            """
            测试结束后的操作,这里基本上都是关闭浏览器
            :return:
            """
            self.driver.quit()
    
        def test_baidu_search(self):
            """
            这里一定要test开头,
            把测试逻辑代码封装到一个test开头的方法里
            :return:
            """
            homepage = HomePage(self.driver)
            homepage.type_search('selenium')# 调用页面对象中的方法
            homepage.send_submit_btn() #调用页面对象类中的点击搜索按钮方法
            time.sleep(2)
            homepage.get_window_img() # 调用基类截图方法
            try:
                assert 'selenium' in homepage.get_pape_title()
                # 调用页面对象继承基类中的获取页面标题方法
                print('Test Pass.')
            except Exception as e:
                print('Test Fail.',format(e))
    
        def test_search2(self):
            homepage = HomePage(self.driver)
            homepage.type_search('python') # 调用页面对象中的方法
            homepage.send_submit_btn() # 调用页面对象类中的点击搜索按钮方法
            time.sleep(2)
            homepage.get_window_img() # 调用基类截图方法
    
    if __name__ == '__main__':
        unittest.main()
    

      

      运行结果:浏览器启动和关闭了两次,是不是这个问题?原来,没执行一次test开头的函数,都要执行一次测试固件,也就是说执行setUp()和tearDown()一次,如果有N个test开头的函数,测试固件就执行N次,我们到底有没有,只需要执行一次测试固件,支持执行多次测试函数。

      

      然后,测试中,肯定需要,打开一个页面,然后测试这个页面的多个用例,才关闭这个页面,去测试其他页面,在unittest是有相关测试固件方法去支持这种行为。

      加上这两个调整,开始和结束就只执行一次了。

    test2.py

    import time
    import unittest
    from framework.browser_engine import BrowserEngine
    from pageobjects.baidu_homepage import HomePage
    
    class BaiduSearch(unittest.TestCase):
        @classmethod # 加上这个后只执行一次
        def setUpClass(self):
            """
            测试固件的setUp()代码,主要是测试的前提工作
            :return:
            """
            browse = BrowserEngine(self)
            self.driver = browse.open_browser(self)
    
        @classmethod # 加上这个后只执行一次
        def tearDownClass(self):
            """
            测试结束后的操作,这里基本上都是关闭浏览器
            :return:
            """
            self.driver.quit()
    
        def test_baidu_search(self):
            """
            这里一定要test开头,
            把测试逻辑代码封装到一个test开头的方法里
            :return:
            """
            homepage = HomePage(self.driver)
            homepage.type_search('selenium')# 调用页面对象中的方法
            homepage.send_submit_btn() #调用页面对象类中的点击搜索按钮方法
            time.sleep(2)
            homepage.get_window_img() # 调用基类截图方法
            try:
                assert 'selenium' in homepage.get_pape_title()
                # 调用页面对象继承基类中的获取页面标题方法
                print('Test Pass.')
            except Exception as e:
                print('Test Fail.',format(e))
    
        def test_search2(self):
            homepage = HomePage(self.driver)
            homepage.type_search('python') # 调用页面对象中的方法
            homepage.send_submit_btn() # 调用页面对象类中的点击搜索按钮方法
            time.sleep(2)
            homepage.get_window_img() # 调用基类截图方法
    
    if __name__ == '__main__':
        unittest.main()
    

      

    总结:项目中基本采用这种方法来执行同一个功能不同测试用例的编写。

    参考文章:https://blog.csdn.net/u011541946/article/details/70305886

  • 相关阅读:
    (六)静态域,静态方法和静态代码块
    (五)final修饰符
    (四)函数的参数传递——值传递
    (三)java字符串
    第二章 shell的语法
    字符串操作
    PropertyGrid—属性类别排序
    PropertyGrid—为复杂属性提供下拉式编辑框和弹出式编辑框
    PropertyGrid--为复杂属性提供编辑功能
    PropertyGrid—添加EventTab
  • 原文地址:https://www.cnblogs.com/zhaocbbb/p/12667382.html
Copyright © 2011-2022 走看看