天天看點

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 繼續操作了。

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