Skip to content

Commit e151571

Browse files
committed
Update documentation on overriding the "sb" pytest fixture
1 parent 8693c3d commit e151571

File tree

1 file changed

+46
-12
lines changed

1 file changed

+46
-12
lines changed

help_docs/syntax_formats.md

Lines changed: 46 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,7 @@ import pytest
301301
def sb(request):
302302
from selenium import webdriver
303303
from seleniumbase import BaseCase
304+
from seleniumbase import config as sb_config
304305

305306
class BaseClass(BaseCase):
306307
def get_new_driver(self, *args, **kwargs):
@@ -324,12 +325,28 @@ def sb(request):
324325
self.save_teardown_screenshot() # On failure or "--screenshot"
325326
super().tearDown()
326327

327-
sb = BaseClass("base_method")
328-
sb.setUpClass()
329-
sb.setUp()
330-
yield sb
331-
sb.tearDown()
332-
sb.tearDownClass()
328+
if request.cls:
329+
request.cls.sb = BaseClass("base_method")
330+
request.cls.sb.setUp()
331+
request.cls.sb._needs_tearDown = True
332+
request.cls.sb._using_sb_fixture = True
333+
request.cls.sb._using_sb_fixture_class = True
334+
sb_config._sb_node[request.node.nodeid] = request.cls.sb
335+
yield request.cls.sb
336+
if request.cls.sb._needs_tearDown:
337+
request.cls.sb.tearDown()
338+
request.cls.sb._needs_tearDown = False
339+
else:
340+
sb = BaseClass("base_method")
341+
sb.setUp()
342+
sb._needs_tearDown = True
343+
sb._using_sb_fixture = True
344+
sb._using_sb_fixture_no_class = True
345+
sb_config._sb_node[request.node.nodeid] = sb
346+
yield sb
347+
if sb._needs_tearDown:
348+
sb.tearDown()
349+
sb._needs_tearDown = False
333350

334351
def test_override_fixture_no_class(sb):
335352
sb.open("https://seleniumbase.io/demo_page")
@@ -352,6 +369,7 @@ import pytest
352369
def sb(request):
353370
import sys
354371
from seleniumbase import BaseCase
372+
from seleniumbase import config as sb_config
355373
from seleniumwire import webdriver # Requires "pip install selenium-wire"
356374

357375
class BaseClass(BaseCase):
@@ -374,12 +392,28 @@ def sb(request):
374392
def base_method(self):
375393
pass
376394

377-
sb = BaseClass("base_method")
378-
sb.setUpClass()
379-
sb.setUp()
380-
yield sb
381-
sb.tearDown()
382-
sb.tearDownClass()
395+
if request.cls:
396+
request.cls.sb = BaseClass("base_method")
397+
request.cls.sb.setUp()
398+
request.cls.sb._needs_tearDown = True
399+
request.cls.sb._using_sb_fixture = True
400+
request.cls.sb._using_sb_fixture_class = True
401+
sb_config._sb_node[request.node.nodeid] = request.cls.sb
402+
yield request.cls.sb
403+
if request.cls.sb._needs_tearDown:
404+
request.cls.sb.tearDown()
405+
request.cls.sb._needs_tearDown = False
406+
else:
407+
sb = BaseClass("base_method")
408+
sb.setUp()
409+
sb._needs_tearDown = True
410+
sb._using_sb_fixture = True
411+
sb._using_sb_fixture_no_class = True
412+
sb_config._sb_node[request.node.nodeid] = sb
413+
yield sb
414+
if sb._needs_tearDown:
415+
sb.tearDown()
416+
sb._needs_tearDown = False
383417

384418
def test_wire_with_no_class(sb):
385419
sb.open("https://seleniumbase.io/demo_page")

0 commit comments

Comments
 (0)