71 lines
2.3 KiB
Python
71 lines
2.3 KiB
Python
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
import os
|
|
import pytest
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def base_url(request):
|
|
"""Return a base URL"""
|
|
config = request.config
|
|
base_url = config.getoption("base_url")
|
|
if base_url is not None:
|
|
return base_url
|
|
|
|
|
|
@pytest.fixture(scope="session", autouse=True)
|
|
def _verify_url(request, base_url):
|
|
"""Verifies the base URL"""
|
|
|
|
verify = request.config.option.verify_base_url
|
|
if base_url and verify:
|
|
# Lazy load requests to reduce cost for tests that don't use the plugin
|
|
import requests
|
|
from requests.packages.urllib3.util.retry import Retry
|
|
from requests.adapters import HTTPAdapter
|
|
|
|
session = requests.Session()
|
|
retries = Retry(backoff_factor=0.1, status_forcelist=[500, 502, 503, 504])
|
|
session.mount(base_url, HTTPAdapter(max_retries=retries))
|
|
session.get(base_url)
|
|
|
|
|
|
def pytest_configure(config):
|
|
if hasattr(config, "workerinput"):
|
|
return # don't run configure on xdist worker nodes
|
|
base_url = config.getoption("base_url") or config.getini("base_url")
|
|
if base_url is not None:
|
|
config.option.base_url = base_url
|
|
metadata = config.pluginmanager.getplugin("metadata")
|
|
if metadata:
|
|
try:
|
|
from pytest_metadata.plugin import metadata_key
|
|
|
|
config.stash[metadata_key]["Base URL"] = base_url
|
|
except ImportError: # pytest-metadata < 3.x
|
|
config._metadata["Base URL"] = base_url
|
|
|
|
|
|
def pytest_report_header(config, start_path):
|
|
base_url = config.getoption("base_url")
|
|
if base_url:
|
|
return "baseurl: {0}".format(base_url)
|
|
|
|
|
|
def pytest_addoption(parser):
|
|
parser.addini("base_url", help="base url for the application under test.")
|
|
parser.addoption(
|
|
"--base-url",
|
|
metavar="url",
|
|
default=os.getenv("PYTEST_BASE_URL", None),
|
|
help="base url for the application under test.",
|
|
)
|
|
parser.addoption(
|
|
"--verify-base-url",
|
|
action="store_true",
|
|
default=not os.getenv("VERIFY_BASE_URL", "false").lower() == "false",
|
|
help="verify the base url.",
|
|
)
|