-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconftest.py
More file actions
44 lines (31 loc) · 1.07 KB
/
conftest.py
File metadata and controls
44 lines (31 loc) · 1.07 KB
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
import pytest
import json
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from datetime import datetime
import pytest_html
@pytest.fixture
def config():
with open("config.json") as f:
return json.load(f)
@pytest.fixture
def driver(config):
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.maximize_window()
driver.get(config["url"])
yield driver
driver.quit()
@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_makereport(item, call):
outcome = yield
report = outcome.get_result()
extra = getattr(report, "extra", [])
if report.when == "call":
driver = item.funcargs.get("driver")
if report.failed and driver:
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
screenshot_name = f"screenshots/{item.name}_{timestamp}.png"
driver.save_screenshot(screenshot_name)
extra.append(pytest_html.extras.image(screenshot_name))
report.extra = extra