chg: added pre-commit fixes on all files that needed them (#31)
This commit is contained in:
Родитель
925e7bd9d6
Коммит
e6db097702
|
@ -135,4 +135,4 @@ dmypy.json
|
||||||
.pytype/
|
.pytype/
|
||||||
|
|
||||||
# Cython debug symbols
|
# Cython debug symbols
|
||||||
cython_debug/
|
cython_debug/
|
||||||
|
|
|
@ -17,6 +17,3 @@ repos:
|
||||||
- id: detect-private-key
|
- id: detect-private-key
|
||||||
- id: double-quote-string-fixer
|
- id: double-quote-string-fixer
|
||||||
- id: end-of-file-fixer
|
- id: end-of-file-fixer
|
||||||
- id: fix-encoding-pragma
|
|
||||||
- id: name-tests-test
|
|
||||||
- id: trailing-whitespace
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
graft src
|
graft src
|
||||||
|
|
|
@ -38,4 +38,4 @@ We prefer all communications to be in English.
|
||||||
|
|
||||||
Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).
|
Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).
|
||||||
|
|
||||||
<!-- END MICROSOFT SECURITY.MD BLOCK -->
|
<!-- END MICROSOFT SECURITY.MD BLOCK -->
|
||||||
|
|
|
@ -5,7 +5,7 @@ import re
|
||||||
release_json = sys.argv[1]
|
release_json = sys.argv[1]
|
||||||
platform = sys.argv[2]
|
platform = sys.argv[2]
|
||||||
|
|
||||||
asset_regex = re.compile(f"{platform}.tar.gz$")
|
asset_regex = re.compile(f'{platform}.tar.gz$')
|
||||||
|
|
||||||
with open(release_json) as f:
|
with open(release_json) as f:
|
||||||
release_data = json.load(f)
|
release_data = json.load(f)
|
||||||
|
@ -18,7 +18,7 @@ for data in release_data:
|
||||||
break
|
break
|
||||||
|
|
||||||
if release is None:
|
if release is None:
|
||||||
print("")
|
print('')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
for asset in release['assets']:
|
for asset in release['assets']:
|
||||||
|
|
|
@ -29,10 +29,10 @@ def pytest_load_initial_conftests(early_config: Config, parser: Parser):
|
||||||
return
|
return
|
||||||
|
|
||||||
parser.addoption(
|
parser.addoption(
|
||||||
"--quilla-opts",
|
'--quilla-opts',
|
||||||
action="store",
|
action='store',
|
||||||
default="",
|
default='',
|
||||||
help="Options to be passed through to the quilla runtime for the scenario tests"
|
help='Options to be passed through to the quilla runtime for the scenario tests'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ def collect_file(parent: pytest.Session, path: LocalPath, prefix: str):
|
||||||
'''
|
'''
|
||||||
# TODO: change "path" to be "fspath" when pytest 6.3 is released:
|
# TODO: change "path" to be "fspath" when pytest 6.3 is released:
|
||||||
# https://docs.pytest.org/en/latest/_modules/_pytest/hookspec.html#pytest_collect_file
|
# https://docs.pytest.org/en/latest/_modules/_pytest/hookspec.html#pytest_collect_file
|
||||||
if path.ext == ".json" and path.basename.startswith(prefix):
|
if path.ext == '.json' and path.basename.startswith(prefix):
|
||||||
return QuillaFile.from_parent(parent, fspath=path)
|
return QuillaFile.from_parent(parent, fspath=path)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -50,11 +50,11 @@ def make_parser() -> argparse.ArgumentParser: # pragma: no cover
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--debug',
|
'--debug',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
help="Enable debug mode",
|
help='Enable debug mode',
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--driver-dir',
|
'--driver-dir',
|
||||||
dest="drivers_path",
|
dest='drivers_path',
|
||||||
action='store',
|
action='store',
|
||||||
default='.',
|
default='.',
|
||||||
help='The directory where browser drivers are stored',
|
help='The directory where browser drivers are stored',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import quilla # pragma: no cover
|
import quilla # pragma: no cover
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__": # pragma: no cover
|
if __name__ == '__main__': # pragma: no cover
|
||||||
quilla.run()
|
quilla.run()
|
||||||
|
|
|
@ -63,33 +63,33 @@ class UITestActions(Enum):
|
||||||
WAIT_FOR_VISIBILITY = 'WaitForVisibility'
|
WAIT_FOR_VISIBILITY = 'WaitForVisibility'
|
||||||
NAVIGATE_TO = 'NavigateTo'
|
NAVIGATE_TO = 'NavigateTo'
|
||||||
VALIDATE = 'Validate'
|
VALIDATE = 'Validate'
|
||||||
REFRESH = "Refresh"
|
REFRESH = 'Refresh'
|
||||||
ADD_COOKIES = "AddCookies"
|
ADD_COOKIES = 'AddCookies'
|
||||||
SET_COOKIES = "SetCookies"
|
SET_COOKIES = 'SetCookies'
|
||||||
REMOVE_COOKIE = "RemoveCookie"
|
REMOVE_COOKIE = 'RemoveCookie'
|
||||||
CLEAR_COOKIES = "ClearCookies"
|
CLEAR_COOKIES = 'ClearCookies'
|
||||||
NAVIGATE_FORWARD = "NavigateForward"
|
NAVIGATE_FORWARD = 'NavigateForward'
|
||||||
NAVIGATE_BACK = "NavigateBack"
|
NAVIGATE_BACK = 'NavigateBack'
|
||||||
SET_BROWSER_SIZE = "SetBrowserSize"
|
SET_BROWSER_SIZE = 'SetBrowserSize'
|
||||||
HOVER = "Hover"
|
HOVER = 'Hover'
|
||||||
OUTPUT_VALUE = "OutputValue"
|
OUTPUT_VALUE = 'OutputValue'
|
||||||
|
|
||||||
|
|
||||||
class ReportType(Enum):
|
class ReportType(Enum):
|
||||||
'''
|
'''
|
||||||
All the currently supported report types
|
All the currently supported report types
|
||||||
'''
|
'''
|
||||||
VALIDATION = "Validation"
|
VALIDATION = 'Validation'
|
||||||
STEP_FAILURE = "StepFailure"
|
STEP_FAILURE = 'StepFailure'
|
||||||
|
|
||||||
|
|
||||||
class BrowserTargets(Enum):
|
class BrowserTargets(Enum):
|
||||||
'''
|
'''
|
||||||
All the currently supported browser targets
|
All the currently supported browser targets
|
||||||
'''
|
'''
|
||||||
FIREFOX = "Firefox"
|
FIREFOX = 'Firefox'
|
||||||
CHROME = "Chrome"
|
CHROME = 'Chrome'
|
||||||
EDGE = "Edge"
|
EDGE = 'Edge'
|
||||||
|
|
||||||
|
|
||||||
class OutputSources(Enum):
|
class OutputSources(Enum):
|
||||||
|
|
|
@ -19,7 +19,7 @@ class NoDriverException(UIValidationException):
|
||||||
'''
|
'''
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("No driver currently bound")
|
super().__init__('No driver currently bound')
|
||||||
|
|
||||||
|
|
||||||
class FailedStepException(UIValidationException):
|
class FailedStepException(UIValidationException):
|
||||||
|
|
|
@ -55,7 +55,7 @@ class Context(DriverHolder):
|
||||||
logger: A logger instance. If None was passed in for the 'logger' argument, will create
|
logger: A logger instance. If None was passed in for the 'logger' argument, will create
|
||||||
one with the default logger.
|
one with the default logger.
|
||||||
'''
|
'''
|
||||||
default_context: Optional["Context"] = None
|
default_context: Optional['Context'] = None
|
||||||
_drivers_path: str
|
_drivers_path: str
|
||||||
_expression_regex = re.compile(r'\${{(.*)}}')
|
_expression_regex = re.compile(r'\${{(.*)}}')
|
||||||
_context_obj_expression = re.compile(
|
_context_obj_expression = re.compile(
|
||||||
|
@ -135,7 +135,7 @@ class Context(DriverHolder):
|
||||||
return v
|
return v
|
||||||
|
|
||||||
def _set_path(self):
|
def _set_path(self):
|
||||||
os.environ['PATH'] = f"{self._path}:{self._drivers_path}"
|
os.environ['PATH'] = f'{self._path}:{self._drivers_path}'
|
||||||
|
|
||||||
@lru_cache
|
@lru_cache
|
||||||
def perform_replacements(self, text: str) -> str:
|
def perform_replacements(self, text: str) -> str:
|
||||||
|
|
|
@ -23,14 +23,14 @@ class BaseReport(EnumResolver):
|
||||||
msg: A string giving further context to the report
|
msg: A string giving further context to the report
|
||||||
'''
|
'''
|
||||||
|
|
||||||
def __init__(self, report_type: ReportType, browser: str, action: UITestActions, msg: str = ""):
|
def __init__(self, report_type: ReportType, browser: str, action: UITestActions, msg: str = ''):
|
||||||
self.browser: str = browser
|
self.browser: str = browser
|
||||||
self.action: UITestActions = action
|
self.action: UITestActions = action
|
||||||
self.msg: str = msg
|
self.msg: str = msg
|
||||||
self.report_type: ReportType = report_type
|
self.report_type: ReportType = report_type
|
||||||
|
|
||||||
@abstractclassmethod
|
@abstractclassmethod
|
||||||
def from_dict(cls, report: Dict[str, Dict[str, str]]) -> "BaseReport":
|
def from_dict(cls, report: Dict[str, Dict[str, str]]) -> 'BaseReport':
|
||||||
'''
|
'''
|
||||||
Converts a dictionary report into a valid Report object
|
Converts a dictionary report into a valid Report object
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ class BaseReport(EnumResolver):
|
||||||
return json.dumps(report)
|
return json.dumps(report)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_json(cls, report_json: str) -> "BaseReport":
|
def from_json(cls, report_json: str) -> 'BaseReport':
|
||||||
'''
|
'''
|
||||||
Loads a valid json string and attempts to convert it into a Report object
|
Loads a valid json string and attempts to convert it into a Report object
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ class BaseReport(EnumResolver):
|
||||||
return cls.from_dict(st) # type: ignore
|
return cls.from_dict(st) # type: ignore
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_file(cls, fp) -> "BaseReport":
|
def from_file(cls, fp) -> 'BaseReport':
|
||||||
'''
|
'''
|
||||||
Converts a fp (a file-like .read() supporting object) containing a json document
|
Converts a fp (a file-like .read() supporting object) containing a json document
|
||||||
into a Report object
|
into a Report object
|
||||||
|
|
|
@ -108,10 +108,10 @@ class ReportSummary:
|
||||||
For example, to filter by only successful reports you would call
|
For example, to filter by only successful reports you would call
|
||||||
`reports.filter_by.success()`
|
`reports.filter_by.success()`
|
||||||
'''
|
'''
|
||||||
def __init__(self, summary: "ReportSummary"):
|
def __init__(self, summary: 'ReportSummary'):
|
||||||
self._summary = summary
|
self._summary = summary
|
||||||
|
|
||||||
def _filter(self, condition: Callable[[BaseReport], bool]) -> "ReportSummary":
|
def _filter(self, condition: Callable[[BaseReport], bool]) -> 'ReportSummary':
|
||||||
'''
|
'''
|
||||||
Returns a new summary with only reports that match the condition passed as
|
Returns a new summary with only reports that match the condition passed as
|
||||||
a lambda function parameter
|
a lambda function parameter
|
||||||
|
@ -121,7 +121,7 @@ class ReportSummary:
|
||||||
|
|
||||||
return ReportSummary(list(filtered_reports))
|
return ReportSummary(list(filtered_reports))
|
||||||
|
|
||||||
def state(self, state: str) -> "ReportSummary":
|
def state(self, state: str) -> 'ReportSummary':
|
||||||
'''
|
'''
|
||||||
Returns:
|
Returns:
|
||||||
a new summary with only reports that have a state matching the one
|
a new summary with only reports that have a state matching the one
|
||||||
|
@ -131,7 +131,7 @@ class ReportSummary:
|
||||||
lambda x: isinstance(x, ValidationReport) and x.state.lower() == state
|
lambda x: isinstance(x, ValidationReport) and x.state.lower() == state
|
||||||
)
|
)
|
||||||
|
|
||||||
def browser(self, browser: str) -> "ReportSummary":
|
def browser(self, browser: str) -> 'ReportSummary':
|
||||||
'''
|
'''
|
||||||
Returns:
|
Returns:
|
||||||
a new summary with only reports that have a browser matching the one
|
a new summary with only reports that have a browser matching the one
|
||||||
|
@ -139,21 +139,21 @@ class ReportSummary:
|
||||||
'''
|
'''
|
||||||
return self._filter(lambda x: x.browser.lower() == browser.lower())
|
return self._filter(lambda x: x.browser.lower() == browser.lower())
|
||||||
|
|
||||||
def successful(self) -> "ReportSummary":
|
def successful(self) -> 'ReportSummary':
|
||||||
'''
|
'''
|
||||||
Returns:
|
Returns:
|
||||||
a new summary with only the reports that produced a success
|
a new summary with only the reports that produced a success
|
||||||
'''
|
'''
|
||||||
return self._filter(lambda x: isinstance(x, ValidationReport) and x.success)
|
return self._filter(lambda x: isinstance(x, ValidationReport) and x.success)
|
||||||
|
|
||||||
def failure(self) -> "ReportSummary":
|
def failure(self) -> 'ReportSummary':
|
||||||
'''
|
'''
|
||||||
Returns:
|
Returns:
|
||||||
a new summary with only the reports that produced a failure
|
a new summary with only the reports that produced a failure
|
||||||
'''
|
'''
|
||||||
return self._filter(lambda x: isinstance(x, ValidationReport) and not x.success)
|
return self._filter(lambda x: isinstance(x, ValidationReport) and not x.success)
|
||||||
|
|
||||||
def type(self, validation_type: str) -> "ReportSummary":
|
def type(self, validation_type: str) -> 'ReportSummary':
|
||||||
'''
|
'''
|
||||||
Returns:
|
Returns:
|
||||||
a new summary with only reports that have a type matching the one
|
a new summary with only reports that have a type matching the one
|
||||||
|
@ -165,7 +165,7 @@ class ReportSummary:
|
||||||
x.validation_type.lower() == validation_type.lower()
|
x.validation_type.lower() == validation_type.lower()
|
||||||
)
|
)
|
||||||
|
|
||||||
def target(self, target: str) -> "ReportSummary":
|
def target(self, target: str) -> 'ReportSummary':
|
||||||
'''
|
'''
|
||||||
Returns:
|
Returns:
|
||||||
a new summary with only reports that have a target matching the one
|
a new summary with only reports that have a target matching the one
|
||||||
|
@ -175,7 +175,7 @@ class ReportSummary:
|
||||||
lambda x: isinstance(x, ValidationReport) and x.target.lower() == target.lower()
|
lambda x: isinstance(x, ValidationReport) and x.target.lower() == target.lower()
|
||||||
)
|
)
|
||||||
|
|
||||||
def critical_failure(self) -> "ReportSummary":
|
def critical_failure(self) -> 'ReportSummary':
|
||||||
'''
|
'''
|
||||||
Returns:
|
Returns:
|
||||||
a new summary with only reports that constitute a critical failure
|
a new summary with only reports that constitute a critical failure
|
||||||
|
|
|
@ -32,7 +32,7 @@ class ValidationReport(BaseReport):
|
||||||
state: str,
|
state: str,
|
||||||
browser_name: str,
|
browser_name: str,
|
||||||
success: bool,
|
success: bool,
|
||||||
msg: str = ""
|
msg: str = ''
|
||||||
):
|
):
|
||||||
super().__init__(
|
super().__init__(
|
||||||
ReportType.VALIDATION,
|
ReportType.VALIDATION,
|
||||||
|
@ -46,7 +46,7 @@ class ValidationReport(BaseReport):
|
||||||
self.success = success
|
self.success = success
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_dict(cls, report) -> "ValidationReport":
|
def from_dict(cls, report) -> 'ValidationReport':
|
||||||
'''
|
'''
|
||||||
Converts a dictionary into a ValidationReport object
|
Converts a dictionary into a ValidationReport object
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ class ValidationReport(BaseReport):
|
||||||
report:
|
report:
|
||||||
'''
|
'''
|
||||||
params = report['validationReport']
|
params = report['validationReport']
|
||||||
msg = ""
|
msg = ''
|
||||||
if 'msg' in params:
|
if 'msg' in params:
|
||||||
msg = params['msg']
|
msg = params['msg']
|
||||||
return ValidationReport(
|
return ValidationReport(
|
||||||
|
@ -71,13 +71,13 @@ class ValidationReport(BaseReport):
|
||||||
Returns a dictionary representation of the object
|
Returns a dictionary representation of the object
|
||||||
'''
|
'''
|
||||||
report = {
|
report = {
|
||||||
"validationReport": {
|
'validationReport': {
|
||||||
"action": self.action.value,
|
'action': self.action.value,
|
||||||
"type": self.validation_type,
|
'type': self.validation_type,
|
||||||
"target": self.target,
|
'target': self.target,
|
||||||
"state": self.state,
|
'state': self.state,
|
||||||
"targetBrowser": self.browser,
|
'targetBrowser': self.browser,
|
||||||
"passed": self.success,
|
'passed': self.success,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ class BaseStep(DriverHolder, EnumResolver):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def copy(self) -> "BaseStep":
|
def copy(self) -> 'BaseStep':
|
||||||
'''
|
'''
|
||||||
Returns a copy of the current Step object
|
Returns a copy of the current Step object
|
||||||
'''
|
'''
|
||||||
|
@ -188,7 +188,7 @@ class BaseValidation(BaseStep):
|
||||||
self._selector = selector
|
self._selector = selector
|
||||||
self._report: Optional[ValidationReport] = None
|
self._report: Optional[ValidationReport] = None
|
||||||
|
|
||||||
def copy(self) -> "BaseValidation":
|
def copy(self) -> 'BaseValidation':
|
||||||
# All classes derived from BaseValidation only need these parameters
|
# All classes derived from BaseValidation only need these parameters
|
||||||
return self.__class__( # type: ignore
|
return self.__class__( # type: ignore
|
||||||
self.ctx, # type: ignore
|
self.ctx, # type: ignore
|
||||||
|
@ -216,7 +216,7 @@ class BaseValidation(BaseStep):
|
||||||
|
|
||||||
return self._report
|
return self._report
|
||||||
|
|
||||||
def _create_report(self, success: bool, msg: str = "") -> ValidationReport:
|
def _create_report(self, success: bool, msg: str = '') -> ValidationReport:
|
||||||
'''
|
'''
|
||||||
Creates a new validation report. Used to simplify the common shared
|
Creates a new validation report. Used to simplify the common shared
|
||||||
behaviour that all validation reports require
|
behaviour that all validation reports require
|
||||||
|
|
|
@ -29,7 +29,7 @@ class OutputValueStep(BaseStep, BaseStepFactory):
|
||||||
ctx: Context,
|
ctx: Context,
|
||||||
action_dict: Dict,
|
action_dict: Dict,
|
||||||
driver: Optional[WebDriver] = None
|
driver: Optional[WebDriver] = None
|
||||||
) -> "BaseStep":
|
) -> 'BaseStep':
|
||||||
'''
|
'''
|
||||||
Factory method to extract needed parameters from a dictionary
|
Factory method to extract needed parameters from a dictionary
|
||||||
'''
|
'''
|
||||||
|
@ -87,7 +87,7 @@ class OutputValueStep(BaseStep, BaseStepFactory):
|
||||||
|
|
||||||
return self.element.get_property(property_name)
|
return self.element.get_property(property_name)
|
||||||
|
|
||||||
def copy(self) -> "OutputValueStep":
|
def copy(self) -> 'OutputValueStep':
|
||||||
'''
|
'''
|
||||||
Creates a shallow copy of the OutputValueStep object
|
Creates a shallow copy of the OutputValueStep object
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,7 @@ class TestStep(BaseStep, BaseStepFactory):
|
||||||
ctx: Context,
|
ctx: Context,
|
||||||
action_dict,
|
action_dict,
|
||||||
driver: Optional[WebDriver] = None
|
driver: Optional[WebDriver] = None
|
||||||
) -> "TestStep":
|
) -> 'TestStep':
|
||||||
'''
|
'''
|
||||||
Factory method to extract needed parameters from a dictionary
|
Factory method to extract needed parameters from a dictionary
|
||||||
'''
|
'''
|
||||||
|
@ -117,7 +117,7 @@ class TestStep(BaseStep, BaseStepFactory):
|
||||||
UITestActions.REMOVE_COOKIE: self._remove_cookie,
|
UITestActions.REMOVE_COOKIE: self._remove_cookie,
|
||||||
}
|
}
|
||||||
|
|
||||||
def copy(self) -> "TestStep":
|
def copy(self) -> 'TestStep':
|
||||||
'''
|
'''
|
||||||
Creates a shallow copy of the TestStep object
|
Creates a shallow copy of the TestStep object
|
||||||
|
|
||||||
|
|
|
@ -110,7 +110,7 @@ class StepsAggregator(DriverHolder):
|
||||||
|
|
||||||
return reports
|
return reports
|
||||||
|
|
||||||
def copy(self) -> "StepsAggregator":
|
def copy(self) -> 'StepsAggregator':
|
||||||
'''
|
'''
|
||||||
Creates a copy of the StepsAggregator object
|
Creates a copy of the StepsAggregator object
|
||||||
|
|
||||||
|
|
|
@ -49,14 +49,14 @@ class QuillaTest(EnumResolver):
|
||||||
}
|
}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_json(cls, ctx: Context, validation_json: str) -> "QuillaTest": # pragma: no cover
|
def from_json(cls, ctx: Context, validation_json: str) -> 'QuillaTest': # pragma: no cover
|
||||||
'''
|
'''
|
||||||
Converts a json string into a UIValidation object
|
Converts a json string into a UIValidation object
|
||||||
'''
|
'''
|
||||||
return QuillaTest.from_dict(ctx, json.loads(validation_json))
|
return QuillaTest.from_dict(ctx, json.loads(validation_json))
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_file(cls, ctx: Context, fp) -> "QuillaTest": # pragma: no cover
|
def from_file(cls, ctx: Context, fp) -> 'QuillaTest': # pragma: no cover
|
||||||
'''
|
'''
|
||||||
Converts an fp (a .read() supporting file-like object) containing a json
|
Converts an fp (a .read() supporting file-like object) containing a json
|
||||||
document into a UIValidation object
|
document into a UIValidation object
|
||||||
|
@ -64,7 +64,7 @@ class QuillaTest(EnumResolver):
|
||||||
return QuillaTest.from_dict(ctx, json.load(fp))
|
return QuillaTest.from_dict(ctx, json.load(fp))
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_filename(cls, ctx: Context, path: str) -> "QuillaTest": # pragma: no cover
|
def from_filename(cls, ctx: Context, path: str) -> 'QuillaTest': # pragma: no cover
|
||||||
'''
|
'''
|
||||||
Reads a file at the specified path and attempts to convert it into a
|
Reads a file at the specified path and attempts to convert it into a
|
||||||
UIValidation object
|
UIValidation object
|
||||||
|
@ -73,7 +73,7 @@ class QuillaTest(EnumResolver):
|
||||||
return QuillaTest.from_file(ctx, fp)
|
return QuillaTest.from_file(ctx, fp)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_dict(cls, ctx: Context, validation_parameters: dict) -> "QuillaTest":
|
def from_dict(cls, ctx: Context, validation_parameters: dict) -> 'QuillaTest':
|
||||||
'''
|
'''
|
||||||
Converts a dictionary that represents a single UIValidation test case into
|
Converts a dictionary that represents a single UIValidation test case into
|
||||||
the appropriate validation object.
|
the appropriate validation object.
|
||||||
|
|
|
@ -46,10 +46,10 @@ def driver():
|
||||||
def pytest_addoption(parser, pluginmanager: PytestPluginManager):
|
def pytest_addoption(parser, pluginmanager: PytestPluginManager):
|
||||||
pluginmanager.set_blocked('quilla')
|
pluginmanager.set_blocked('quilla')
|
||||||
parser.addoption(
|
parser.addoption(
|
||||||
"--quilla-opts",
|
'--quilla-opts',
|
||||||
action="store",
|
action='store',
|
||||||
default="",
|
default='',
|
||||||
help="Options to be passed through to the quilla runtime for the scenario tests"
|
help='Options to be passed through to the quilla runtime for the scenario tests'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -32,11 +32,11 @@ class UtilTests:
|
||||||
def test_driverholder_returns_expected(self):
|
def test_driverholder_returns_expected(self):
|
||||||
holder = DriverHolder()
|
holder = DriverHolder()
|
||||||
|
|
||||||
holder.driver = "Some Value"
|
holder.driver = 'Some Value'
|
||||||
|
|
||||||
assert holder.driver == "Some Value"
|
assert holder.driver == 'Some Value'
|
||||||
|
|
||||||
@pytest.mark.parametrize("enum_type", [
|
@pytest.mark.parametrize('enum_type', [
|
||||||
enums.UITestActions,
|
enums.UITestActions,
|
||||||
enums.XPathValidationStates,
|
enums.XPathValidationStates,
|
||||||
enums.URLValidationStates,
|
enums.URLValidationStates,
|
||||||
|
@ -49,7 +49,7 @@ class UtilTests:
|
||||||
for val in enum_type:
|
for val in enum_type:
|
||||||
assert resolver._name_to_enum(val.value, enum_type) is val
|
assert resolver._name_to_enum(val.value, enum_type) is val
|
||||||
|
|
||||||
@pytest.mark.parametrize("enum_type", [
|
@pytest.mark.parametrize('enum_type', [
|
||||||
enums.UITestActions,
|
enums.UITestActions,
|
||||||
enums.XPathValidationStates,
|
enums.XPathValidationStates,
|
||||||
enums.URLValidationStates,
|
enums.URLValidationStates,
|
||||||
|
|
Загрузка…
Ссылка в новой задаче