@@ -301,6 +301,7 @@ import pytest
301
301
def sb (request ):
302
302
from selenium import webdriver
303
303
from seleniumbase import BaseCase
304
+ from seleniumbase import config as sb_config
304
305
305
306
class BaseClass (BaseCase ):
306
307
def get_new_driver (self , * args , ** kwargs ):
@@ -324,12 +325,28 @@ def sb(request):
324
325
self .save_teardown_screenshot() # On failure or "--screenshot"
325
326
super ().tearDown()
326
327
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
333
350
334
351
def test_override_fixture_no_class (sb ):
335
352
sb.open(" https://seleniumbase.io/demo_page" )
@@ -352,6 +369,7 @@ import pytest
352
369
def sb (request ):
353
370
import sys
354
371
from seleniumbase import BaseCase
372
+ from seleniumbase import config as sb_config
355
373
from seleniumwire import webdriver # Requires "pip install selenium-wire"
356
374
357
375
class BaseClass (BaseCase ):
@@ -374,12 +392,28 @@ def sb(request):
374
392
def base_method (self ):
375
393
pass
376
394
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
383
417
384
418
def test_wire_with_no_class (sb ):
385
419
sb.open(" https://seleniumbase.io/demo_page" )
0 commit comments