zoukankan      html  css  js  c++  java
  • pytest setup和teardown初始化

    • 用法简介:
    • setup_method:仅作用于class用例集中的用例,置于class内,每个用例都会调用一次
    • setup_function:作用于独立的def用例,不可作用于class内的用例
    • setup_class:作用于class用例集中的用例,置于class内,只在class用例执行的开始执行setup_class,结束时执行teardown_class
    • setup_module:作用于模块内的所有用例,置于class外,只在所以用例的开始执行setup_module,结束时执行teardown_module
    • pytest.fixture():作用于模块内的所有用例,但需要传递装饰函数为参数,可置于class内或class外

    1.setup_class 和teardown_class用法

    # coding=utf-8
    import pytest
    from selenium import webdriver
    import time
    
    
    class Test(object):
        @classmethod
        def setup_class(cls):
            print("初始化浏览器")
            cls.driver=webdriver.Chrome()
            cls.driver.maximize_window()
            time.sleep(2)
            cls.driver.get("http://www.baidu.com")
        @classmethod
        def teardown_class(cls):
            cls.driver.close()
            print("关闭浏览器")
        def test_in01(self):
            self.driver.find_element_by_id("kw").send_keys("流浪的python")
            self.driver.find_element_by_id("su").click()
            print("0001 is ok")
    
        def test_in02(self):
            self.driver.find_element_by_xpath('//*[@id="s_tab"]/div/a[1]').click()
            time.sleep(3)
            print("002 is ok ")
    ============================= test session starts =============================
    platform win32 -- Python 3.7.2, pytest-4.1.1, py-1.7.0, pluggy-0.8.1
    rootdir: D:\Pycharm\PyCharm 5.0.4\jre\jre\bin, inifile:
    plugins: xdist-1.26.0, rerunfailures-6.0, metadata-1.8.0, html-1.20.0, forked-1.0.1, allure-pytest-2.5.4
    collected 2 items
    
    . 初始化浏览器
    0001 is ok
    .002 is ok 
    .关闭浏览器
    
    
    2.setup_method 和teardown_method 用法
    class TestMethod(object):
    
        def setup_method(self):
            print("初始化浏览器")
            self.driver=webdriver.Chrome()
            self.driver.maximize_window()
            self.driver.get("http://www.baidu.com")
        def teardown_method(self):
            self.driver.close()
            print("关闭浏览器")
        def test_in01(self):
            self.driver.find_element_by_id("kw").send_keys("流浪的python")
            self.driver.find_element_by_id("su").click()
            print("第一次打开浏览器is ok")
    
        def test_in02(self):
            self.driver.find_element_by_id("kw").send_keys("流浪的python")
            self.driver.find_element_by_id("su").click()
            self.driver.find_element_by_xpath('//*[@id="s_tab"]/div/a[1]').click()
            time.sleep(3)
            print("第二次打开浏览器 is ok ")

    ============================= test session starts =============================
    platform win32 -- Python 3.7.2, pytest-4.1.1, py-1.7.0, pluggy-0.8.1
    rootdir: D:\Pycharm\PyCharm 5.0.4\jre\jre\bin, inifile:
    plugins: xdist-1.26.0, rerunfailures-6.0, metadata-1.8.0, html-1.20.0, forked-1.0.1, allure-pytest-2.5.4
    collected 2 items

    . 初始化浏览器
    第一次打开浏览器is ok
    .关闭浏览器
    初始化浏览器
    第二次打开浏览器 is ok 
    .关闭浏览器

    3. pytest.fixture用法介绍

    # coding=utf-8
    import pytest
    from selenium import webdriver
    from pyfoo.Utils.pageobj import GetEle
    from pyfoo.Utils.pageobj import *
    @pytest.fixture(scope="class")
    def driver():
        url="http://www.baidu.com"
        driver= webdriver.Chrome()
        driver.get(url)
        print("初始化完成...")
        yield driver
        driver.close()
        print("teardown...关闭浏览器")
    
    # @pytest.mark.usefixtures("driver")
    class Test_fix_module(object):
    
        def test_open_bd(self,driver):
            GetEle().ele_by_id(driver,'kw').send_keys("pytest")
            GetEle().ele_by_id(driver,'su').click()
            print("搜索资源case成功")
        def test_open_tb(self,driver):
            GetEle().ele_by_xpath(driver,'//*[@id="s_tab"]/div/a[1]').click()
            print("进入资讯case成功")
    
    if __name__ == "__main__":
        pytest.main(['-v','-s','-q'])

    ============================= test session starts =============================
    platform win32 -- Python 3.7.2, pytest-4.1.1, py-1.7.0, pluggy-0.8.1
    rootdir: D:\Pycharm\PyCharm 5.0.4\jre\jre\bin, inifile:
    plugins: xdist-1.26.0, rerunfailures-6.0, metadata-1.8.0, html-1.20.0, forked-1.0.1, allure-pytest-2.5.4
    collected 2 items

    . 初始化完成...
    搜索资源case成功
    .进入资讯case成功
    .teardown...关闭浏览器

    4.setup_module 和teardown_module

    # coding=utf-8
    import pytest
    from selenium import webdriver
    import time
    def setup_module():
        global driver
        driver=webdriver.Chrome()
        driver.maximize_window()
        time.sleep(2)
        driver.get("http://www.baidu.com")
        print("开始模块初始化浏览器")
    def teardown_module():
        driver.close()
        print("模块执行结束关闭浏览器")
    class TestModule(object):
        def test_001(self):
            driver.find_element_by_id("kw").send_keys("流浪的python")
            driver.find_element_by_id("su").click()
            print("test_001 is ok ")
        def test_002(self):
            driver.find_element_by_xpath('//*[@id="s_tab"]/div/a[1]').click()
            time.sleep(3)
            print("test_002 is ok ")

    ============================= test session starts =============================
    platform win32 -- Python 3.7.2, pytest-4.1.1, py-1.7.0, pluggy-0.8.1
    rootdir: D:\Pycharm\PyCharm 5.0.4\jre\jre\bin, inifile:
    plugins: xdist-1.26.0, rerunfailures-6.0, metadata-1.8.0, html-1.20.0, forked-1.0.1, allure-pytest-2.5.4
    collected 2 items

    . 开始模块初始化浏览器
    test_001 is ok 
    .test_002 is ok 
    .模块执行结束关闭浏览器

    5.setup_function 和 teardown_function

    # coding=utf-8
    import pytest
    from selenium import webdriver
    import time

    def setup_function():
    print("setup_function():每个函数之前执行")


    def teardown_function():
    print ("teardown_function():每个函数之后执行")


    def test_01():
    print ("正在执行函数test1")
    x = "this"
    assert 'h' in x

    def add(a,b):
    return a+b


    def test_add():
    print ("正在执行test_add()")
    assert add(3,4) == 7

    ============================= test session starts =============================
    platform win32 -- Python 3.7.2, pytest-4.1.1, py-1.7.0, pluggy-0.8.1
    rootdir: D:\Pycharm\PyCharm 5.0.4\jre\jre\bin, inifile:
    plugins: xdist-1.26.0, rerunfailures-6.0, metadata-1.8.0, html-1.20.0, forked-1.0.1, allure-pytest-2.5.4
    collected 2 items

    . setup_function():每个函数之前执行
    正在执行函数test1
    .teardown_function():每个函数之后执行
    setup_function():每个函数之前执行
    正在执行test_add()
    .teardown_function():每个函数之后执行

  • 相关阅读:
    Spring IOC(二)
    Spring组件注册
    第六章:随机数和expect
    第二十一节:异常处理
    第二十节:基础知识阶段复习
    LVM逻辑卷管理
    第十九节:类的装饰器和数据描述符的应用
    第十八节:上下文管理协议
    第十七节:数据描述符
    第十六节:内置函数补充
  • 原文地址:https://www.cnblogs.com/SunshineKimi/p/10585951.html
Copyright © 2011-2022 走看看