import pytest import time from selenium import webdriver @pytest.fixture(scope="function",autouse=True) #fixture的使用范围为方法级,每个方法之前之后都会运行它,并且自动使用 def foo(): print("function setup") driver = webdriver.Chrome() driver.get('https://www.baidu.com') yield 100 print("function teardown") time.sleep(5) driver.close() def test_answer_1(): print("函数正在执行") assert 4 == 5 if __name__ == '__main__': pytest.main()
被pytest.fixture装饰的函数foo,yield返回100,yield前的语句会在被测函数执行前执行,yield后的语句会在被测函数执行后执行。所以上面代码的执行顺序是先调用webdriver打开百度,然后执行test_answer_1函数,最后再执行关闭浏览器的操作