I have a problem, I have in one file 2 tests, and want to run them just with the one login.
from selenium.webdriver.common.by import By
from methods.is_present import is_element_present, is_element_present_n
from methods.users import add_new_user, delete_added_user
from methods.login import login
from methods.users import modify_user
from methods.users import modified_user
def test_new_user(driver, name='Adelia Foxy', username='zared114'):
login(driver, username="Admin", password="Password")
# add new user
add_new_user(driver,name, username)
#check if the new user added
assert is_element_present_n(driver, By.LINK_TEXT, "%s" % username)
# delete added user
delete_added_user(driver, name, username)
#check if user deleted
assert not is_element_present(driver, By.LINK_TEXT, "%s" % username)
def test_modify_user(driver, name='Adelia Foxy', username='New Username11'):
login(driver, username="Admin", password="Password")
#modifying user information
modify_user(driver, name, username)
#check is user modified
modified_user(driver, name, username)
I have separate file with login function:
def login(driver, username, password):
driver.get("http://hrm.seleniumminutes.com/")
driver.find_element_by_css_selector("[name=txtUsername]").send_keys(username)
driver.find_element_by_css_selector("[name=txtPassword]").send_keys(password)
driver.find_element_by_css_selector("[name=Submit]").click()
driver.find_element_by_css_selector("[id=menu_admin_viewAdminModule]").click()
And also I have separate file "conftest.py" with pytest fixture:
import pytest
from selenium import webdriver
@pytest.fixture(scope='session')
def driver(request):
wd = webdriver.Chrome()
wd.implicitly_wait(2)
request.addfinalizer(wd.quit)
return wd
I'm trying to put "login" method inside my fixture
import pytest
from selenium import webdriver
from methods.login import login
@pytest.fixture(scope='session')
def driver(request):
wd = webdriver.Chrome()
wd.implicitly_wait(2)
login(driver, username="Admin", password="Password")
request.addfinalizer(wd.quit)
return wd
Something like above, but i'm getting AttributeError: 'function' object has no attribute 'get'
Who knows how to solve this, or maybe someone knows better way to run few tests with just one login, thanks
https://github.com/harmatii/hrm
below my error message
request = <SubRequest 'driver' for <Function 'test_new_user'>>
@pytest.fixture(scope='session')
def driver(request):
wd = webdriver.Chrome()
login(driver, username="Admin", password="Password")