From 6ac43e67bf9303bec51690a4250bddae49f2faf0 Mon Sep 17 00:00:00 2001 From: Greg Gauthier Date: Sat, 10 Oct 2020 22:40:06 +0100 Subject: [PATCH] refactored pytest portion of the framework --- browserdriver/__init__.py | 20 +++++++++++--------- conftest.py | 35 ++++------------------------------- fixtures.ini | 4 ++++ fixtures.py | 0 pytest.ini | 3 +++ pytests/test_basic.py | 16 +++++++++------- 6 files changed, 31 insertions(+), 47 deletions(-) create mode 100644 fixtures.ini delete mode 100644 fixtures.py create mode 100644 pytest.ini diff --git a/browserdriver/__init__.py b/browserdriver/__init__.py index d8f8826..c7cb560 100755 --- a/browserdriver/__init__.py +++ b/browserdriver/__init__.py @@ -7,11 +7,11 @@ from webdriver_manager.chrome import ChromeDriverManager class BrowserDriver: @staticmethod - def get(browser=None): + def get(browser=None, headless=True): if browser == "chrome": - return chrome() + return chrome(headless) elif browser == "firefox": - return firefox() + return firefox(headless) elif browser == "edge": return edge() elif browser == "safari": @@ -20,21 +20,23 @@ class BrowserDriver: raise ValueError("'{}' is not a supported browser".format(browser)) -def chrome(): +def chrome(headless=True): options = webdriver.ChromeOptions() - options.headless = True + options.headless = headless options.add_argument('--ignore-certificate-errors') - return webdriver.Chrome(ChromeDriverManager().install(), options=options) + return webdriver.Chrome( + ChromeDriverManager().install(), + options=options) -def firefox(): +def firefox(headless=True): options = webdriver.FirefoxOptions() options.accept_insecure_certs = True - options.headless = True + options.headless = headless gecko_driver = GeckoDriverManager().install() return webdriver.Firefox( executable_path=gecko_driver, - firefox_options=options) + options=options) def edge(): diff --git a/conftest.py b/conftest.py index 8fb4559..10cc643 100755 --- a/conftest.py +++ b/conftest.py @@ -1,39 +1,13 @@ import configparser import pytest -import fixtures config = configparser.ConfigParser() -def pytest_addoption(parser): - """ attaches optional cmd-line args to the pytest machinery """ - parser.addoption('--properties', - action='store', - default='staging', - help='the name of the environment for which you need properties.') - parser.addoption('--fixture', - action='store', - default='default', - help='the name of the environment for which you need fixture accounts.') - - @pytest.fixture(scope="session", autouse=True) -def service_base_url(pytestconfig): - """ - The url of the live sme-service under test - """ - env = pytestconfig.getoption("env") - return _read_config_section(fixtures, env)['target_url'] - - -@pytest.fixture(scope="session", autouse=True) -def fixture_data(pytestconfig): - """ - The fixture data items for the account under test - """ - #env = pytestconfig.getoption("env") - return _read_config_section(fixtures, "env") +def headless(): + return _str_to_bool(_read_config_section("fixtures.ini", "dev")["headless"]) def _read_config_section(source, section): @@ -41,6 +15,5 @@ def _read_config_section(source, section): return config[section] -def _read_fixture_file(fixtures): - fixture_data = config.read(fixtures) - return fixture_data +def _str_to_bool(s): + return s.lower() in ['true', '1', 'yes'] diff --git a/fixtures.ini b/fixtures.ini new file mode 100644 index 0000000..5ef80e0 --- /dev/null +++ b/fixtures.ini @@ -0,0 +1,4 @@ +[dev] +env = dev +headless = True +target_url = "https://google.com/" diff --git a/fixtures.py b/fixtures.py deleted file mode 100644 index e69de29..0000000 diff --git a/pytest.ini b/pytest.ini new file mode 100644 index 0000000..7cbc1fc --- /dev/null +++ b/pytest.ini @@ -0,0 +1,3 @@ +[pytest] +testpaths = pytests + diff --git a/pytests/test_basic.py b/pytests/test_basic.py index 37d0703..7b9d830 100644 --- a/pytests/test_basic.py +++ b/pytests/test_basic.py @@ -1,15 +1,17 @@ from browserdriver import BrowserDriver -def setup_module(module): - global bd - bd = BrowserDriver().get("firefox") - - -def teardown_module(module): +def test_firefox_browser(headless): + bd = BrowserDriver().get("firefox", headless=headless) + bd.get('https://test.io') + print(bd.current_url, bd.title) + assert "QA Testing as a Service | test IO" == bd.title bd.quit() -def test_load_browser(): +def test_chrome_browser(headless): + bd = BrowserDriver().get("chrome", headless=headless) bd.get('https://test.io') + print(bd.current_url, bd.title) assert "QA Testing as a Service | test IO" == bd.title + bd.quit()