pytest文檔61-fixture之name參數使用別名


前言

本篇講 fixture 里面的 name 參數如何使用,使用別名后代碼更容易理解。

fixture使用案例

定義一個fixture打開瀏覽器,測試用例需用到這個fixture的前置操作

from selenium import webdriver
import pytest
import time
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/


@pytest.fixture(scope="module")
def open_broswer():
    '''打開瀏覽器'''
    driver = webdriver.Chrome()
    yield driver
    driver.close()


def test_blog(open_broswer):
    '''打開我的blog: https://www.cnblogs.com/yoyoketang/'''
    open_broswer.get("https://www.cnblogs.com/yoyoketang/")
    time.sleep(3)

open_broswer 這個fixture 返回打開瀏覽器的實例 driver,后面的測試用例傳 open_broswer 參數,此時 open_broswer 就相當於我們之前寫代碼的 driver 了。
小伙伴們習慣了 driver.get() 這種代碼,突然看到 open_broswer.get() 這樣的代碼會不太適應,不知道后面該如何寫了。

於是我給open_broswer 重命名為name, 讓代碼看起來更容易理解一點

def test_blog(open_broswer):
    '''打開我的blog: https://www.cnblogs.com/yoyoketang/'''
    driver = open_broswer   # 這個地方是重命名,不是調用函數
    driver.get("https://www.cnblogs.com/yoyoketang/")
    time.sleep(3)

這樣寫的話又有一個誤區,有的同學會認為這里是調用函數了。。。(注意調用函數的時候后面是有括號的,這里沒括號,只是重命名換個名稱而已)

fixture里面的name參數

為了實現上面的效果,又不引起誤解,可以在 fixture 里面使用 name 參數,給 fixture 使用別名

from selenium import webdriver
import pytest
import time
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/


@pytest.fixture(scope="module", name="driver")
def open_broswer():
    '''打開瀏覽器'''
    driver = webdriver.Chrome()
    yield driver
    driver.close()


def test_blog(driver):
    '''打開我的blog: https://www.cnblogs.com/yoyoketang/'''
    driver.get("https://www.cnblogs.com/yoyoketang/")
    time.sleep(3)

這樣就可以使用 driver 繼續操作了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM