Robot Framework
testcase.py
Go to the documentation of this file.
1 # Copyright 2008-2015 Nokia Networks
2 # Copyright 2016- Robot Framework Foundation
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 # http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 
16 from robot.utils import setter
17 
18 from .body import Body
19 from .fixture import create_fixture
20 from .itemlist import ItemList
21 from .keyword import Keyword, Keywords
22 from .modelobject import ModelObject
23 from .tags import Tags
24 
25 
26 
32  body_class = Body
33  fixture_class = Keyword
34  repr_args = ('name',)
35  __slots__ = ['parent', 'name', 'doc', 'timeout', 'lineno', '_setup', '_teardown']
36 
37  def __init__(self, name='', doc='', tags=None, timeout=None, lineno=None,
38  parent=None):
39  self.namename = name
40  self.docdoc = doc
41  self.tagstagstags = tags
42  self.timeouttimeout = timeout
43  self.linenolineno = lineno
44  self.parentparent = parent
45  self.bodybodybody = None
46  self._setup_setup = None
47  self._teardown_teardown = None
48 
49  @setter
50 
51  def body(self, body):
52  return self.body_classbody_class(self, body)
53 
54  @setter
55 
56  def tags(self, tags):
57  return Tags(tags)
58 
59  @property
60 
83  setup = property
84 
85  def setup(self):
86  if self._setup_setup is None and self:
87  self._setup_setup = create_fixture(None, self, Keyword.SETUP)
88  return self._setup_setup
89 
90  @setup.setter
91 
92  def setup(self, setup):
93  self._setup_setup = create_fixture(setup, self, Keyword.SETUP)
94 
95  @property
96 
106  has_setup = property
107 
108  def has_setup(self):
109  return bool(self._setup_setup)
110 
111  @property
112 
116  teardown = property
117 
118  def teardown(self):
119  if self._teardown_teardown is None and self:
120  self._teardown_teardown = create_fixture(None, self, Keyword.TEARDOWN)
121  return self._teardown_teardown
122 
123  @teardown.setter
124 
125  def teardown(self, teardown):
126  self._teardown_teardown = create_fixture(teardown, self, Keyword.TEARDOWN)
127 
128  @property
129 
135  has_teardown = property
136 
137  def has_teardown(self):
138  return bool(self._teardown_teardown)
139 
140  @property
141 
145  keywords = property
146 
147  def keywords(self):
148  keywords = [self.setupsetupsetupsetup] + list(self.bodybodybody) + [self.teardownteardownteardownteardown]
149  return Keywords(self, [kw for kw in keywords if kw])
150 
151  @keywords.setter
152 
153  def keywords(self, keywords):
154  Keywords.raise_deprecation_error()
155 
156  @property
157 
162  id = property
163 
164  def id(self):
165  if not self.parentparent:
166  return 't1'
167  return '%s-t%d' % (self.parentparent.id, self.parentparent.tests.index(self)+1)
168 
169  @property
170 
171  longname = property
172 
173  def longname(self):
174  if not self.parentparent:
175  return self.namename
176  return '%s.%s' % (self.parentparent.longname, self.namename)
177 
178  @property
179  source = property
180 
181  def source(self):
182  return self.parentparent.source if self.parentparent is not None else None
183 
184 
185  def visit(self, visitor):
186  visitor.visit_test(self)
187 
188  def __str__(self):
189  return self.namename
190 
191 
193  __slots__ = []
194 
195  def __init__(self, test_class=TestCase, parent=None, tests=None):
196  ItemList.__init__(self, test_class, {'parent': parent}, tests)
197 
198  def _check_type_and_set_attrs(self, *tests):
199  tests = ItemList._check_type_and_set_attrs(self, *tests)
200  for test in tests:
201  for visitor in test.parent._visitors:
202  test.visit(visitor)
203  return tests
A list-like object representing keywords in a suite, a test or a keyword.
Definition: keyword.py:137
Base model for a single test case.
Definition: testcase.py:31
keywords
Deprecated since Robot Framework 4.0.
Definition: testcase.py:145
def __init__(self, name='', doc='', tags=None, timeout=None, lineno=None, parent=None)
Definition: testcase.py:38
has_setup
Check does a suite have a setup without creating a setup object.
Definition: testcase.py:106
longname
Test name prefixed with the long name of the parent suite.
Definition: testcase.py:171
def body(self, body)
Test body as a :class:~robot.model.body.Body object.
Definition: testcase.py:51
def tags(self, tags)
Test tags as a :class:~.model.tags.Tags object.
Definition: testcase.py:56
has_teardown
Check does a test have a teardown without creating a teardown object.
Definition: testcase.py:135
def teardown(self, teardown)
Definition: testcase.py:125
setup
Test setup as a :class:~.model.keyword.Keyword object.
Definition: testcase.py:83
def visit(self, visitor)
:mod:Visitor interface <robot.model.visitor> entry-point.
Definition: testcase.py:185
id
Test case id in format like s1-t3.
Definition: testcase.py:162
teardown
Test teardown as a :class:~.model.keyword.Keyword object.
Definition: testcase.py:116
def setup(self, setup)
Definition: testcase.py:92
def _check_type_and_set_attrs(self, *tests)
Definition: testcase.py:198
def __init__(self, test_class=TestCase, parent=None, tests=None)
Definition: testcase.py:195
def create_fixture(fixture, parent, type)
Definition: fixture.py:16