Advertisement
Guest User

conftest

a guest
Apr 13th, 2018
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.77 KB | None | 0 0
  1. import os
  2. import pytest
  3. import sys
  4.  
  5. import config.urls as url
  6. import config.variables as cvar
  7. from config.config_parser import BLConfigParser
  8. import pages
  9. from pages.page_helpers.driver_factory import DriverFactory
  10. from pages.page_helpers.gmail import Gmail
  11. from pages.page_helpers.st_api import STApi
  12.  
  13.  
  14. def pytest_configure(config):
  15.     base_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
  16.     artifacts_path = os.path.join(base_path, 'artifacts')
  17.     terminal = config.pluginmanager.getplugin('terminal')
  18.     BaseReporter = terminal.TerminalReporter
  19.     class QuietReporter(BaseReporter):
  20.         def __init__(self, *args, **kwargs):
  21.             BaseReporter.__init__(self, *args, **kwargs)
  22.             self.verbosity = 0
  23.             self.showlongtestinfo = False
  24.     terminal.TerminalReporter = QuietReporter
  25.     for file in os.listdir(artifacts_path):
  26.         if file.endswith('.png'):
  27.             os.remove(os.path.join(artifacts_path, file))
  28.  
  29. def pytest_report_teststatus(report):
  30.     if report.passed and report.when == "teardown":
  31.         letter = "PASSED"
  32.     elif report.skipped and report.when == "teardown":
  33.         letter = "SKIPPED"
  34.     elif report.failed and report.when == "teardown":
  35.         letter = "FAILED BADLY"
  36.         if report.when != "call":
  37.             letter = "f"
  38.     else:
  39.         letter = ""
  40.     return report.outcome, letter, ""
  41.  
  42.  
  43. def parseFuncName(_nodeid):
  44.     file_name = _nodeid.split("::").pop()
  45.     file_name = file_name.replace('test_', '')
  46.     parts = [a.title() for a in file_name.split("_")]
  47.     line = " ".join(parts)
  48.     return line
  49.  
  50.  
  51. def pytest_itemcollected(item):
  52.     item._nodeid = parseFuncName(item._nodeid)
  53.  
  54.  
  55. @pytest.hookimpl(hookwrapper=True)
  56. def pytest_runtest_makereport(item, call):
  57.     outcome = yield
  58.     report = outcome.get_result()
  59.     if report.when == 'call' and report.failed:
  60.         d = item.funcargs['driver']
  61.         n = item.funcargs['request'].node.name
  62.         artifacts_path = os.path.abspath(os.path.join(
  63.                 os.path.dirname(__file__),
  64.                 '..',
  65.                 'artifacts'))
  66.         d.get_screenshot_as_file(f'{artifacts_path}/{n}.png')
  67.  
  68.  
  69. def pytest_addoption(parser):
  70.     parser.addoption('--headless', action='store', default=False,
  71.                      help='Command line option for toggling headless Chrome')
  72.  
  73.  
  74. @pytest.fixture(scope='session')
  75. def api():
  76.     if cvar.api_client_id is not None:
  77.         api = STApi(environment=BLConfigParser().api_environment(),
  78.                     client_id=cvar.api_client_id,
  79.                     client_secret=cvar.api_client_secret,
  80.                     username=cvar.email,
  81.                     password=cvar.pw)
  82.         api.get_token()
  83.         return api
  84.     return None
  85.  
  86.  
  87. @pytest.fixture(scope='session', params=BLConfigParser().browser_types())
  88. def driver(request, api):
  89.     if api is not None:
  90.         api.get_events_teams_team_id()
  91.         for e in api.team_event_ids:
  92.             api.delete_event(e)
  93.         for le in api.legacy_team_event_ids:
  94.             api.delete_legacyvm3_event(le)
  95.  
  96.     driver = DriverFactory(request, browser=request.param).create_driver()
  97.     cur = BLConfigParser().current_browser()
  98.     if driver is None:
  99.         pytest.exit(f'Driver was not correctly instantiated (Browser: {cur})')
  100.     yield driver
  101.     driver.quit()
  102.  
  103.  
  104. @pytest.fixture(scope='session')
  105. def urls():
  106.     return url
  107.  
  108.  
  109. @pytest.fixture(scope='session')
  110. def cvars():
  111.     return cvar
  112.  
  113.  
  114. @pytest.fixture(scope='session')
  115. def earth_portal(driver):
  116.     return pages.earth_portal.EarthPortal(driver)
  117.  
  118.  
  119. @pytest.fixture(scope='session')
  120. def home(driver):
  121.     return pages.home.STHome(driver)
  122.  
  123.  
  124. @pytest.fixture(scope='session')
  125. def home2018(driver):
  126.     return pages.home2018.STHome2018(driver)
  127.  
  128.  
  129. @pytest.fixture(scope='session')
  130. def create_event(driver):
  131.     return pages.create_event.CreateEvent(driver)
  132.  
  133.  
  134. @pytest.fixture(scope='session')
  135. def checkin(driver):
  136.     return pages.checkin.CheckIn(driver)
  137.  
  138.  
  139. @pytest.fixture(scope='session')
  140. def diagram(driver):
  141.     return pages.diagram.Diagram(driver)
  142.  
  143.  
  144. @pytest.fixture(scope='session')
  145. def sign_up(driver):
  146.     return pages.sign_up.SignUp(driver)
  147.  
  148.  
  149. @pytest.fixture(scope='session')
  150. def propose(driver):
  151.     return pages.propose.Propose(driver)
  152.  
  153.  
  154. @pytest.fixture(scope='session')
  155. def convert(driver):
  156.     return pages.convert.Convert(driver)
  157.  
  158.  
  159. @pytest.fixture(scope='session')
  160. def event_portal(driver):
  161.     return pages.event_portal.EventPortal(driver)
  162.  
  163.  
  164. @pytest.fixture(scope='session')
  165. def gmail(driver):
  166.     return Gmail(driver)
  167.  
  168.  
  169. @pytest.fixture(scope='session')
  170. def search(driver):
  171.     return pages.search.Search(driver)
  172.  
  173.  
  174. @pytest.fixture(scope='session')
  175. def event_titles():
  176.     titles = []
  177.     return titles
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement