35 from collections
import OrderedDict
36 from itertools
import chain
39 from robot
import model
40 from robot.model import BodyItem, Keywords, TotalStatisticsBuilder
43 from .configurer
import SuiteConfigurer
44 from .messagefilter
import MessageFilter
45 from .modeldeprecation
import deprecated, DeprecatedAttributesMixin
46 from .keywordremover
import KeywordRemover
47 from .suiteteardownfailed
import SuiteTeardownFailed, SuiteTeardownFailureHandler
59 __slots__ = [
'iteration_class']
61 def __init__(self, iteration_class, parent=None, items=None):
86 elapsedtime = property
129 raise ValueError(
"`skipped` value must be truthy, got '%s'." % skipped)
146 raise ValueError(
"`not_run` value must be truthy, got '%s'." % not_run)
152 type = BodyItem.ITERATION
154 repr_args = (
'variables',)
155 __slots__ = [
'variables',
'status',
'starttime',
'endtime',
'doc']
157 def __init__(self, variables=None, status='FAIL', starttime=None, endtime=None,
158 doc='', parent=None):
172 visitor.visit_for_iteration(self)
179 return ', '.join(
'%s = %s' % item
for item
in self.
variablesvariables.items())
184 iterations_class = Iterations
185 iteration_class = ForIteration
186 __slots__ = [
'status',
'starttime',
'endtime',
'doc']
188 def __init__(self, variables=(), flavor=
'IN', values=(), status=
'FAIL',
189 starttime=
None, endtime=
None, doc=
'', parent=
None):
190 super().
__init__(variables, flavor, values, parent)
205 return '%s %s [ %s ]' % (
' | '.join(self.
variablesvariables), self.
flavorflavor,
206 ' | '.join(self.
valuesvalues))
211 type = BodyItem.ITERATION
213 __slots__ = [
'status',
'starttime',
'endtime',
'doc']
215 def __init__(self, status='FAIL', starttime=None, endtime=None,
216 doc='', parent=None):
229 visitor.visit_while_iteration(self)
241 iterations_class = Iterations
242 iteration_class = WhileIteration
243 __slots__ = [
'status',
'starttime',
'endtime',
'doc']
245 def __init__(self, condition=None, limit=None, parent=None, status='FAIL',
246 starttime=None, endtime=None, doc=''):
247 super().
__init__(condition, limit, parent)
266 parts.append(f
'limit={self.limit}')
267 return ' | '.join(parts)
272 __slots__ = [
'status',
'starttime',
'endtime',
'doc']
274 def __init__(self, type=BodyItem.IF, condition=None, status='FAIL',
275 starttime=None, endtime=None, doc='', parent=None):
276 super().
__init__(type, condition, parent)
292 branch_class = IfBranch
293 branches_class = Branches
294 __slots__ = [
'status',
'starttime',
'endtime',
'doc']
296 def __init__(self, status='FAIL', starttime=None, endtime=None, doc='', parent=None):
306 __slots__ = [
'status',
'starttime',
'endtime',
'doc']
308 def __init__(self, type=BodyItem.TRY, patterns=(), pattern_type=
None, variable=
None,
309 status=
'FAIL', starttime=
None, endtime=
None, doc=
'', parent=
None):
310 super().
__init__(type, patterns, pattern_type, variable, parent)
321 patterns = list(self.
patternspatterns)
323 patterns.append(f
'type={self.pattern_type}')
326 parts.append(
' | '.join(patterns))
328 parts.append(f
'AS {self.variable}')
329 return ' '.join(parts)
334 branch_class = TryBranch
335 branches_class = Branches
336 __slots__ = [
'status',
'starttime',
'endtime',
'doc']
338 def __init__(self, status='FAIL', starttime=None, endtime=None, doc='', parent=None):
348 __slots__ = [
'status',
'starttime',
'endtime']
351 def __init__(self, values=(), status=
'FAIL', starttime=
None, endtime=
None, parent=
None):
385 __slots__ = [
'status',
'starttime',
'endtime']
388 def __init__(self, status='FAIL', starttime=None, endtime=None, parent=None):
422 __slots__ = [
'status',
'starttime',
'endtime']
425 def __init__(self, status='FAIL', starttime=None, endtime=None, parent=None):
466 __slots__ = [
'kwname',
'libname',
'status',
'starttime',
'endtime',
'message',
469 def __init__(self, kwname='', libname='', doc='', args=(), assign=(), tags=(),
470 timeout=
None, type=BodyItem.KEYWORD, status=
'FAIL', starttime=
None,
471 endtime=
None, parent=
None, sourcename=
None):
472 super().
__init__(
None, doc, args, assign, tags, timeout, type, parent)
502 keywords = self.
bodybodybody.filter(messages=
False)
510 Keywords.raise_deprecation_error()
521 return self.
bodybodybody.filter(messages=
True)
531 warnings.warn(
"'Keyword.children' is deprecated. Use 'Keyword.body' instead.")
556 "Set 'kwname' and 'libname' separately instead.")
566 __slots__ = [
'status',
'message',
'starttime',
'endtime']
568 fixture_class = Keyword
570 def __init__(self, name='', doc='', tags=None, timeout=None, lineno=None,
571 status='FAIL', message='', starttime=None, endtime=None,
573 super().
__init__(name, doc, tags, timeout, lineno, parent)
594 warnings.warn(
"'TestCase.critical' is deprecated and always returns 'True'.")
603 __slots__ = [
'message',
'starttime',
'endtime']
604 test_class = TestCase
605 fixture_class = Keyword
607 def __init__(self, name='', doc='', metadata=None, source=None, message='',
608 starttime=None, endtime=None, rpa=False, parent=None):
609 super().
__init__(name, doc, metadata, source, rpa, parent)
673 statistics = property
680 full_message = property
689 stat_message = property
696 elapsedtime = property
701 return sum(child.elapsedtime
for child
in
737 model.TestSuite.configure(self)
Base class for Body and Branches objects.
def teardown(self, teardown)
teardown
Keyword teardown as a :class:Keyword object.
A list-like object representing keywords in a suite, a test or a keyword.
teardown
Suite teardown as a :class:~.model.keyword.Keyword object.
def suites(self, suites)
Child suites as a :class:~.TestSuites object.
def visit(self, visitor)
:mod:Visitor interface <robot.model.visitor> entry-point.
def tests(self, tests)
Tests as a :class:~.TestCases object.
def teardown(self, teardown)
setup
Suite setup as a :class:~.model.keyword.Keyword object.
def body(self, body)
Child keywords and messages as a :class:~.Body object.
def __init__(self, status='FAIL', starttime=None, endtime=None, parent=None)
def body(self, body)
Child keywords and messages as a :class:~.Body object.
def __init__(self, status='FAIL', starttime=None, endtime=None, parent=None)
Represents one FOR loop iteration.
def __init__(self, variables=None, status='FAIL', starttime=None, endtime=None, doc='', parent=None)
def __init__(self, variables=(), flavor='IN', values=(), status='FAIL', starttime=None, endtime=None, doc='', parent=None)
def __init__(self, type=BodyItem.IF, condition=None, status='FAIL', starttime=None, endtime=None, doc='', parent=None)
def __init__(self, status='FAIL', starttime=None, endtime=None, doc='', parent=None)
def create_iteration(self, *args, **kwargs)
def __init__(self, iteration_class, parent=None, items=None)
Represents results of a single keyword.
def body(self, body)
Child keywords and messages as a :class:~.Body object.
name
Keyword name in format libname.kwname.
children
List of child keywords and messages in creation order.
messages
Keyword's messages.
def __init__(self, kwname='', libname='', doc='', args=(), assign=(), tags=(), timeout=None, type=BodyItem.KEYWORD, status='FAIL', starttime=None, endtime=None, parent=None, sourcename=None)
keywords
Deprecated since Robot Framework 4.0.
def __init__(self, values=(), status='FAIL', starttime=None, endtime=None, parent=None)
def body(self, body)
Child keywords and messages as a :class:~.Body object.
not_run
True when :attr:status is 'NOT RUN', False otherwise.
skipped
True when :attr:status is 'SKIP', False otherwise.
passed
True when :attr:status is 'PASS', False otherwise.
failed
True when :attr:status is 'FAIL', False otherwise.
elapsedtime
Total execution time in milliseconds.
Represents results of a single test case.
def __init__(self, name='', doc='', tags=None, timeout=None, lineno=None, status='FAIL', message='', starttime=None, endtime=None, parent=None)
Represents results of a single test suite.
def __init__(self, name='', doc='', metadata=None, source=None, message='', starttime=None, endtime=None, rpa=False, parent=None)
elapsedtime
Total execution time in milliseconds.
skipped
True if there are no passed or failed tests, False otherwise.
def filter_messages(self, log_level='TRACE')
Remove log messages below the specified log_level.
stat_message
String representation of the :attr:statistics.
def remove_keywords(self, how)
Remove keywords based on the given condition.
def suite_teardown_skipped(self, message)
Internal usage only.
passed
True if no test has failed but some have passed, False otherwise.
def handle_suite_teardown_failures(self)
Internal usage only.
status
'PASS', 'FAIL' or 'SKIP' depending on test statuses.
def configure(self, **options)
A shortcut to configure a suite using one method call.
def suite_teardown_failed(self, error)
Internal usage only.
full_message
Combination of :attr:message and :attr:stat_message.
statistics
Suite statistics as a :class:~robot.model.totalstatistics.TotalStatistics object.
failed
True if any test has failed, False otherwise.
def __init__(self, type=BodyItem.TRY, patterns=(), pattern_type=None, variable=None, status='FAIL', starttime=None, endtime=None, doc='', parent=None)
def __init__(self, status='FAIL', starttime=None, endtime=None, doc='', parent=None)
Represents one WHILE loop iteration.
def __init__(self, status='FAIL', starttime=None, endtime=None, doc='', parent=None)
def __init__(self, condition=None, limit=None, parent=None, status='FAIL', starttime=None, endtime=None, doc='')
def get_elapsed_time(start_time, end_time)
Returns the time between given timestamps in milliseconds.