-
Notifications
You must be signed in to change notification settings - Fork 0
/
conftest.py
118 lines (94 loc) · 3.51 KB
/
conftest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import os
from urllib import parse
import logging
from datetime import datetime
import pytest
from selenium import webdriver
from page_objects.admin_page import AdminPage
from page_objects.catalog_page import CatalogPage
def pytest_addoption(parser):
parser.addoption("--address", action="store",
default="https://localhost/",
help="Opencard address")
parser.addoption("--browser", action="store",
default="firefox", help="Browser name")
parser.addoption("--wait", action="store",
default=0, help="Waiting")
@pytest.fixture(scope="session")
def logger():
logger = logging.getLogger("otus_qa")
logger.setLevel(logging.DEBUG)
now = datetime.now().strftime("%Y%m%d-%Hh%M")
log_file = "./logs/" + now + ".log"
file_handler = logging.FileHandler(log_file)
file_handler.setLevel(logging.DEBUG)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.WARNING)
handler_format = logging.Formatter("%(asctime)s — %(name)s — %(levelname)s — %(message)s")
file_handler.setFormatter(handler_format)
console_handler.setFormatter(handler_format)
logger.addHandler(file_handler)
logger.addHandler(console_handler)
@pytest.fixture(scope="session", autouse=True)
def driver(request):
browser = request.config.getoption("--browser")
time_to_wait = request.config.getoption("--wait")
if browser == 'firefox':
wd = webdriver.Firefox()
wd.maximize_window()
elif browser == 'chrome':
wd = webdriver.Chrome()
else:
logger.warning("Unsupported browser!")
wd = webdriver.Ie()
wd.implicitly_wait(time_to_wait)
wd.get(request.config.getoption("--address"))
yield wd
wd.quit()
@pytest.fixture(scope="session")
def opencart(request):
return request.config.getoption("--address")
@pytest.fixture(scope="session")
def login(driver, request):
"""login to admin page"""
url = request.config.getoption("--address") + 'admin/'
driver.get(url)
admin_page = AdminPage(driver)
admin_page.login(login="user", password="bitnami1")
current_url = driver.current_url
parsed = parse.urlparse(current_url)
parse.parse_qs(parsed.query)
token = parse.parse_qs(parsed.query)['user_token'][0]
return token
@pytest.mark.usefixtures("login")
def add_token(url, login):
parsed = parse.urlparse(url)
qs = parse.parse_qs(parsed.query)
qs['user_token'] = login
new_url = parsed._replace(query=parse.urlencode(qs))
return parse.urlunparse(new_url)
# def add_token(url, login):
# parsed = parse.urlparse(url)
# qs = {key: value[0] for key, value in qs.items() if len(value) == 1}
# qs['user_token'] = login
# new_url = parsed._replace(query=parse.urlencode(qs))
# print(parse.urlunparse(new_url))
# assert False
# return parse.urlunparse(new_url)
@pytest.mark.usefixtures("login")
@pytest.fixture(scope="function", autouse=True)
def catalog_page(request, driver, login):
"""fixture for opening a page and declaring a driver"""
url = request.config.getoption("--address") + \
"admin/index.php?route=common/dashboard" + "&user_token=" + login
driver.get(url)
return CatalogPage(driver)
@pytest.fixture(scope="function")
def refresh_page(driver):
driver.refresh()
yield
driver.refresh()
def _get_info_for_report_(config):
config.metadata['os'] = os.name
config.metadata['PATH'] = os.environ['PATH']
config.metadata['pwd'] = os.getcwd()