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