Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
@flaky(max_runs, min_passes)
def test_something():
pass
flaky_attribute = dict((
(attr, getattr(
test_something,
attr,
None
)) for attr in FlakyNames()
))
self.assertIsNotNone(flaky_attribute)
self.assertDictContainsSubset(
{
FlakyNames.MIN_PASSES: min_passes,
FlakyNames.MAX_RUNS: max_runs,
FlakyNames.CURRENT_PASSES: 0,
FlakyNames.CURRENT_RUNS: 0,
FlakyNames.CURRENT_ERRORS: None
},
flaky_attribute
)
def _has_flaky_test_succeeded(flaky):
"""
Whether or not the flaky test has succeeded
:param flaky:
Dictionary of flaky attributes
:type flaky:
`dict` of `unicode` to varies
:return:
True if the flaky test should be marked as success; False if
it should be rerun.
:rtype:
`bool`
"""
return flaky[FlakyNames.CURRENT_PASSES] >= flaky[FlakyNames.MIN_PASSES]
Default flaky attributes to set on a flaky test.
:rtype:
`dict`
"""
if max_runs is None:
max_runs = 2
if min_passes is None:
min_passes = 1
if min_passes <= 0:
raise ValueError('min_passes must be positive')
if max_runs < min_passes:
raise ValueError('min_passes cannot be greater than max_runs!')
return {
FlakyNames.MAX_RUNS: max_runs,
FlakyNames.MIN_PASSES: min_passes,
FlakyNames.CURRENT_RUNS: 0,
FlakyNames.CURRENT_PASSES: 0,
FlakyNames.RERUN_FILTER: FilterWrapper(rerun_filter or _true),
}