fixture夹具,@pytest.fixture
(scope="function")每一个函数或方法都会调用
import pytest
@pytest.fixture(scope="function",autouse=True)
def fixture1():
print("我是前置步骤1。。。")
return 4
@pytest.fixture(scope="function")
def fixture2():
print("我是前置步骤2。。。")
return 4
def test_fixture1(fixture1,fixture2):
assert fixture1==4
assert fixture2 == 4
def test_fixture2():
assert 1==1
if __name__ == '__main__':
pytest.main()
- 只初始化一次
import pytest
from selenium.webdriver.common.by import By
from selenium import webdriver
@pytest.fixture()
def driver():
driver = webdriver.Chrome()
driver.maximize_window()
return driver
class TestBaidu:
def test_baidu(self, driver):
driver.get("https://www.baidu.com/")
title = driver.title
url = driver.current_url
text = driver.find_element(By.CSS_SELECTOR, 'a[href="https://news.baidu.com/"]').text
button_text = driver.find_element(By.ID, 'su').accessible_name
assert title == "百度一下,你就知道"
assert url == "https://www.baidu.com/"
assert text == "新闻"
assert button_text == "百度一下"
(scope="class")每一个类调用一次
- TestBaidu类只打开一次浏览器
import pytest
from selenium.webdriver.common.by import By
from selenium import webdriver
# 只打开一次浏览器
@pytest.fixture(scope="class")
def driver():
driver = webdriver.Chrome()
driver.maximize_window()
print("打开浏览器")
return driver
class TestBaidu:
def test_baidu1(self, driver):
driver.get("https://www.baidu.com/")
title = driver.title
url = driver.current_url
text = driver.find_element(By.CSS_SELECTOR, 'a[href="https://news.baidu.com/"]').text
button_text = driver.find_element(By.ID, 'su').accessible_name
assert title == "百度一下,你就知道"
assert url == "https://www.baidu.com/"
assert text == "新闻"
assert button_text == "百度一下"
def test_baidu2(self, driver):
driver.get("https://www.baidu.com/")
title = driver.title
url = driver.current_url
text = driver.find_element(By.CSS_SELECTOR, 'a[href="https://news.baidu.com/"]').text
button_text = driver.find_element(By.ID, 'su').accessible_name
assert title == "百度一下,你就知道"
assert url == "https://www.baidu.com/"
assert text == "新闻"
assert button_text == "百度一下"
(scope="module")每一个.py文件调用一次
(scope="session")是多个文件调用一次,.py文件就是module