首先,我在给一个审批流写自动化脚本,需要各个不同的人登录去点通过按钮,每个人的流程都一致,唯一的区别就是user不同。
那么,我的实现目标是,不关闭browser,只写一个testcase,实现不同用户按顺序运行同一个testcase
第一次尝试,在driver里面写login
@pytest.fixture(scope="session") # conftest文件
def driver(request):
global driver
name = request.param
driver = webdriver.Chrome()
driver.maximize_window()
login = Login(driver)
login.geturl(config.url)
login.input_username_password(name, config.password) #已经写好的登录步骤
yield driver
driver.quit()
return driver
testcase中用driver这么用
@pytest.mark.parametrize('driver',['user1','user2'],indirect=True)
def test_01(driver):
menu = menu(driver) # 这行只是为了测试能不能正常打开和登录
这样写勉强能实现最终效果,但过程由于运行太慢我不喜欢。每次testcase运行完之后,浏览器会直接quit,然后隔很久再打开一个browser
然后!我想既然每次testcase运行都会被driver影响到,那我只要把login从driver里单独抽出来写,是不是就能实现
第二版,conftest中driver和login分开写
@pytest.fixture(scope="session") # conftest文件
def driver():
global driver
driver = webdriver.Chrome()
driver.maximize_window()
yield driver
driver.quit()
return driver
@pytest.fixture()
def login(request, driver):
name = request.param
login = Login(driver)
login.geturl(config.url)
login.input_username_password(name, config.password) #已经写好的登录步骤
return name
testcase中用driver和login这么用
@pytest.mark.parametrize('login', ['user1','user2'], indirect=True)
def test_01(driver, login):
menu = menu(driver) # 这行只是为了测试能不能正常打开和登录
成功!
标签:入门,selenium,driver,testcase,pytest,login,只开,def,name From: https://blog.csdn.net/m0_46316883/article/details/140691632