Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import pytest
- import sys
- import config.urls as url
- import config.variables as cvar
- from config.config_parser import BLConfigParser
- import pages
- from pages.page_helpers.driver_factory import DriverFactory
- from pages.page_helpers.gmail import Gmail
- from pages.page_helpers.st_api import STApi
- def pytest_configure(config):
- base_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
- artifacts_path = os.path.join(base_path, 'artifacts')
- terminal = config.pluginmanager.getplugin('terminal')
- BaseReporter = terminal.TerminalReporter
- class QuietReporter(BaseReporter):
- def __init__(self, *args, **kwargs):
- BaseReporter.__init__(self, *args, **kwargs)
- self.verbosity = 0
- self.showlongtestinfo = False
- terminal.TerminalReporter = QuietReporter
- for file in os.listdir(artifacts_path):
- if file.endswith('.png'):
- os.remove(os.path.join(artifacts_path, file))
- def pytest_report_teststatus(report):
- if report.passed and report.when == "teardown":
- letter = "PASSED"
- elif report.skipped and report.when == "teardown":
- letter = "SKIPPED"
- elif report.failed and report.when == "teardown":
- letter = "FAILED BADLY"
- if report.when != "call":
- letter = "f"
- else:
- letter = ""
- return report.outcome, letter, ""
- def parseFuncName(_nodeid):
- file_name = _nodeid.split("::").pop()
- file_name = file_name.replace('test_', '')
- parts = [a.title() for a in file_name.split("_")]
- line = " ".join(parts)
- return line
- def pytest_itemcollected(item):
- item._nodeid = parseFuncName(item._nodeid)
- @pytest.hookimpl(hookwrapper=True)
- def pytest_runtest_makereport(item, call):
- outcome = yield
- report = outcome.get_result()
- if report.when == 'call' and report.failed:
- d = item.funcargs['driver']
- n = item.funcargs['request'].node.name
- artifacts_path = os.path.abspath(os.path.join(
- os.path.dirname(__file__),
- '..',
- 'artifacts'))
- d.get_screenshot_as_file(f'{artifacts_path}/{n}.png')
- def pytest_addoption(parser):
- parser.addoption('--headless', action='store', default=False,
- help='Command line option for toggling headless Chrome')
- @pytest.fixture(scope='session')
- def api():
- if cvar.api_client_id is not None:
- api = STApi(environment=BLConfigParser().api_environment(),
- client_id=cvar.api_client_id,
- client_secret=cvar.api_client_secret,
- username=cvar.email,
- password=cvar.pw)
- api.get_token()
- return api
- return None
- @pytest.fixture(scope='session', params=BLConfigParser().browser_types())
- def driver(request, api):
- if api is not None:
- api.get_events_teams_team_id()
- for e in api.team_event_ids:
- api.delete_event(e)
- for le in api.legacy_team_event_ids:
- api.delete_legacyvm3_event(le)
- driver = DriverFactory(request, browser=request.param).create_driver()
- cur = BLConfigParser().current_browser()
- if driver is None:
- pytest.exit(f'Driver was not correctly instantiated (Browser: {cur})')
- yield driver
- driver.quit()
- @pytest.fixture(scope='session')
- def urls():
- return url
- @pytest.fixture(scope='session')
- def cvars():
- return cvar
- @pytest.fixture(scope='session')
- def earth_portal(driver):
- return pages.earth_portal.EarthPortal(driver)
- @pytest.fixture(scope='session')
- def home(driver):
- return pages.home.STHome(driver)
- @pytest.fixture(scope='session')
- def home2018(driver):
- return pages.home2018.STHome2018(driver)
- @pytest.fixture(scope='session')
- def create_event(driver):
- return pages.create_event.CreateEvent(driver)
- @pytest.fixture(scope='session')
- def checkin(driver):
- return pages.checkin.CheckIn(driver)
- @pytest.fixture(scope='session')
- def diagram(driver):
- return pages.diagram.Diagram(driver)
- @pytest.fixture(scope='session')
- def sign_up(driver):
- return pages.sign_up.SignUp(driver)
- @pytest.fixture(scope='session')
- def propose(driver):
- return pages.propose.Propose(driver)
- @pytest.fixture(scope='session')
- def convert(driver):
- return pages.convert.Convert(driver)
- @pytest.fixture(scope='session')
- def event_portal(driver):
- return pages.event_portal.EventPortal(driver)
- @pytest.fixture(scope='session')
- def gmail(driver):
- return Gmail(driver)
- @pytest.fixture(scope='session')
- def search(driver):
- return pages.search.Search(driver)
- @pytest.fixture(scope='session')
- def event_titles():
- titles = []
- return titles
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement