前言
本篇講 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 繼續操作了。
