装饰器usefixtures
当用例需要调用fixture时,前面讲到可以直接在用例里加fixture参数,如果一个测试class都需要用到fixture,每个用例都去传参,会比较麻烦,这个时候,可以在class外面加usefixtures装饰器,让整个class都调用fixture,实例如下:
# conftest.py
import pytest
import time
from selenium import webdriver
@pytest.fixture(scope='session')
def driver(request):
driver = webdriver.Chrome()
def end():
driver.quit()
request.addfinalizer(end)
return driver
@pytest.fixture()
def start(driver):
print('打开百度')
driver.get('https://www.baidu.com')
print(driver.title)
time.sleep(5)
# test_class.py
import pytest
@pytest.mark.hello
@pytest.mark.usefixtures('start')
class Testclass:
def test_1(self,driver):
driver.find_element_by_id('kw').send_keys('python')
driver.find_element_by_id('su').click()
print('搜索python')
def test_2(self,driver):
driver.get('https://i.qq.com/')
print('打开空间')
命令运行 > pytest -m hello 结果如下:
因为usefixtures无法回去返回值,所以当fixture中带返回值,并且要用到返回值时,我们只能通过传fixture的参数来调用了