def test_criticality_set_for_child_suites_earlier_is_ignored(self): self.suite.set_criticality('use', 'us') sub2 = TestSuite() sub2.set_criticality('ignore', 'these') self.suite.suites.append(sub2) self._verify_criticality(self.suite, ['use'], ['us']) self._verify_criticality(self.sub, ['use'], ['us']) self._verify_criticality(sub2, ['use'], ['us'])
def _create_nested_suite_with_tests(self): suite = TestSuite() suite.set_criticality([], ['nc']) suite.suites = [ self._create_suite_with_tests(), self._create_suite_with_tests() ] return suite
def _get_suite(self): ts = lambda s, ms=0: '20120816 16:09:%02d.%03d' % (s, ms) suite = TestSuite(name='root', starttime=ts(0), endtime=ts(42)) suite.set_criticality(critical_tags=['t2']) sub1 = TestSuite(name='sub1', starttime=ts(0), endtime=ts(10)) sub2 = TestSuite(name='sub2') suite.suites = [sub1, sub2] sub1.tests = [ TestCase(tags=['t1', 't2'], status='PASS', starttime=ts(0), endtime=ts(1, 500)), TestCase(tags=['t1', 't3'], status='FAIL', starttime=ts(2), endtime=ts(3, 499)) ] sub2.tests = [ TestCase(tags=['t1', 't2'], status='PASS', starttime=ts(10), endtime=ts(30)) ] sub2.suites.create(name='below suite stat level')\ .tests.create(tags=['t1'], status='FAIL', starttime=ts(30), endtime=ts(40)) return suite
def _get_suite_with_keywords(self): suite = TestSuite(name='root') suite.keywords = [ Keyword('k1', type='setup'), Keyword('k2', type='teardown') ] suite.keywords[0].keywords = [Keyword('k1-k2')] return suite
def setUp(self): suite = TestSuite(name='Hello') suite.tests = [ TestCase(status='PASS'), TestCase(status='PASS'), TestCase(status='FAIL') ] self.statistics = Statistics(suite)
def test_suite_status_is_failed_if_critical_failed_test(self): suite = TestSuite() suite.tests.create(status='PASS') assert_equal(suite.status, 'PASS') suite.tests.create(status='FAIL') assert_equal(suite.status, 'FAIL') suite.tests.create(status='PASS') assert_equal(suite.status, 'FAIL')
def test_remove_passed_removes_from_passed_test(self): suite = TestSuite() test = suite.tests.create(status='PASS') test.keywords.create(status='PASS').messages.create( message='keyword message') test.keywords.create(status='PASS').keywords.create(status='PASS') self._remove_passed(suite) for keyword in test.keywords: self._should_contain_no_messages_or_keywords(keyword)
def test_passed(self): suite = TestSuite() assert_true(suite.passed) suite.tests.create(status='PASS') assert_true(suite.passed) suite.tests.create(status='FAIL', tags='tag') assert_false(suite.passed) suite.set_criticality(non_critical_tags='tag') assert_true(suite.passed)
def test_remove_passed_removes_setup_and_teardown_from_passed_suite(self): suite = TestSuite() suite.tests.create(status='PASS') suite.keywords.create(status='PASS', type='setup').keywords.create() suite.keywords.create( status='PASS', type='teardown').messages.create(message='message') self._remove_passed(suite) for keyword in suite.keywords: self._should_contain_no_messages_or_keywords(keyword)
def test_remove_passed_does_not_remove_setup_and_teardown_from_failed_suite( self): suite = TestSuite() suite.keywords.create(type='setup').messages.create(message='some') suite.keywords.create(type='teardown').keywords.create() suite.tests.create(status='FAIL') self._remove_passed(suite) assert_equal(len(suite.keywords.setup.messages), 1) assert_equal(len(suite.keywords.teardown.keywords), 1)
def _create_suite_with_tests(self): suite = TestSuite() suite.set_criticality([], ['nc']) suite.tests = [TestCase(status='PASS'), TestCase(status='PASS', tags='nc'), TestCase(status='PASS'), TestCase(status='FAIL'), TestCase(status='FAIL', tags='nc')] return suite
def suite_with_forloop(self): suite = TestSuite() test = suite.tests.create(status='PASS') forloop = test.keywords.create(status='PASS', type='for') for i in range(100): forloop.keywords.create( status='PASS', type='foritem').messages.create(message='something') return suite, forloop
def _suite_with_setup_and_teardown_and_test_with_keywords(self): suite = TestSuite() suite.keywords.create(type='setup').messages.create('setup message') suite.keywords.create( type='teardown').messages.create('teardown message') test = suite.tests.create() test.keywords.create().keywords.create() test.keywords.create().messages.create('kw with message') return suite
def setUp(self): self.suite = TestSuite(name='root') self.suite.tests = [ TestCase(name='n0'), TestCase(name='n1', tags=['t1']), TestCase(name='n2', tags=['t1', 't2']) ] self.suite.suites.create(name='sub').tests.create(name='n1', tags=['t1'])
def _get_nested_suite_with_tests_and_keywords(self): suite = self._get_suite_with_keywords() sub = TestSuite(name='suite2') suite.suites = [self._get_suite_with_tests(), sub] sub.keywords.create('kw', type='setup') sub.keywords[0].keywords.create('skw') sub.keywords[0].keywords[0].messages.create('Message') sub.tests.create('test', doc='tdoc') sub.tests[0].keywords.create('koowee', doc='kdoc') return suite
def test_nested_structure(self): suite = TestSuite() suite.set_criticality(critical_tags=['crit']) suite.keywords = [Keyword(type='setup'), Keyword(type='teardown')] K1 = self._verify_keyword(suite.keywords[0], type=1) K2 = self._verify_keyword(suite.keywords[1], type=2) suite.suites = [TestSuite()] suite.suites[0].tests = [TestCase(tags=['crit', 'xxx'])] t = self._verify_test(suite.suites[0].tests[0], tags=('crit', 'xxx')) suite.tests = [TestCase(), TestCase(status='PASS')] S1 = self._verify_suite(suite.suites[0], status=0, tests=(t, ), stats=(1, 0, 1, 0)) suite.tests[0].keywords = [Keyword(type='for'), Keyword()] suite.tests[0].keywords[0].keywords = [Keyword(type='foritem')] suite.tests[0].keywords[0].messages = [Message()] k = self._verify_keyword(suite.tests[0].keywords[0].keywords[0], type=4) m = self._verify_message(suite.tests[0].keywords[0].messages[0]) k1 = self._verify_keyword(suite.tests[0].keywords[0], type=3, keywords=(k, ), messages=(m, )) suite.tests[0].keywords[1].messages = [ Message(), Message('msg', level='TRACE') ] m1 = self._verify_message(suite.tests[0].keywords[1].messages[0]) m2 = self._verify_message(suite.tests[0].keywords[1].messages[1], 'msg', level=0) k2 = self._verify_keyword(suite.tests[0].keywords[1], messages=(m1, m2)) T1 = self._verify_test(suite.tests[0], critical=0, keywords=(k1, k2)) T2 = self._verify_test(suite.tests[1], critical=0, status=1) self._verify_suite(suite, status=0, keywords=(K1, K2), suites=(S1, ), tests=(T1, T2), stats=(3, 1, 1, 0)) self._verify_min_message_level('TRACE')
def test_remove_passed_does_now_remove_setup_and_teardown_from_suite_with_noncritical_failure( self): suite = TestSuite() suite.set_criticality([], ['non']) suite.keywords.create(type='setup').messages.create(message='some') suite.keywords.create(type='teardown').keywords.create() suite.tests.create(status='FAIL', tags='non') assert_equal(suite.status, 'PASS') self._remove_passed(suite) assert_equal(len(suite.keywords.setup.messages), 1) assert_equal(len(suite.keywords.teardown.keywords), 1)
def _get_suite(self): suite = TestSuite(name='root', doc='sdoc', metadata={'m': 'v'}) suite.keywords.create(kwname='keyword') sub = suite.suites.create(name='suite', metadata={'a': '1', 'b': '2'}) sub.keywords.create(kwname='keyword') t1 = sub.tests.create(name='test', tags=['t1']) t1.keywords.create(kwname='keyword') t1.keywords.create(kwname='keyword') t2 = sub.tests.create(name='test', tags=['t1', 't2']) t2.keywords.create(kwname='keyword') return suite
def test_linking(self): self.errors.messages.create('Linkable', 'WARN', timestamp='20111206 14:33:00.001') context = JsBuildingContext() kw = TestSuite().tests.create().keywords.create() MessageBuilder(context).build(kw.messages.create('Linkable', 'WARN', timestamp='20111206 14:33:00.001')) model = ErrorsBuilder(context).build(self.errors) model = remap(model, context.strings) assert_equals(model, ((-1, 5, 'Error'), (41, 3, 'Warning'), (0, 3, 'Linkable', 's1-t1-k1')))
def test_suite_html_formatting(self): self._verify_suite(TestSuite(name='*xxx*', doc='*bold* <&>', metadata={ '*x*': '*b*', '<': '>' }), name='*xxx*', doc='<b>bold</b> <&>', metadata=('*x*', '<p><b>b</b></p>', '<', '<p>></p>'))
def test_suite_with_values(self): suite = TestSuite('Name', 'Doc', { 'm1': 'v1', 'M2': 'V2' }, None, 'Message', '20111204 19:00:00.000', '20111204 19:00:42.001') self._verify_suite(suite, 'Name', 'Doc', ('m1', '<p>v1</p>', 'M2', '<p>V2</p>'), message='Message', start=0, elapsed=42001)
def _get_execution_result(self): suite = TestSuite(name=self.EXPECTED_SUITE_NAME) tc = suite.tests.create(name=self.EXPECTED_TEST_NAME, status='PASS') tc.keywords.create(kwname=self.EXPECTED_KEYWORD_NAME, status='PASS') tc = suite.tests.create(name=self.EXPECTED_FAILING_TEST) kw = tc.keywords.create(kwname=self.EXPECTED_KEYWORD_NAME) kw.messages.create(message=self.EXPECTED_DEBUG_MESSAGE, level='DEBUG', timestamp='20201212 12:12:12.000') errors = ExecutionErrors() errors.messages.create(message=self.EXPECTED_ERROR_MESSAGE, level='ERROR', timestamp='20201212 12:12:12.000') return Result(root_suite=suite, errors=errors)
def test_remove_based_on_multiple_condition(self): suite = TestSuite() t1 = suite.tests.create(status='PASS') t1.keywords.create().messages.create() t2 = suite.tests.create(status='FAIL') t2.keywords.create().messages.create() t2.keywords.create(type='for').keywords.create(type='foritem', status='PASS') self._remove(['passed', 'for'], suite) assert_equal(len(suite.tests[0].keywords[0].messages), 0) assert_equal(len(suite.tests[1].keywords[0].messages), 1) assert_equal(len(suite.tests[1].keywords[1].keywords), 0)
def setUp(self): self.suite = TestSuite() self.suite.keywords = [Keyword(), Keyword()] s1 = self.suite.suites.create() s1.keywords.create() tc = s1.tests.create() tc.keywords = [Keyword(), Keyword(), Keyword()] s2 = self.suite.suites.create() t1 = s2.tests.create() t2 = s2.tests.create() t1.keywords = [Keyword()] t2.keywords = [Keyword(), Keyword()]
def setUp(self): ts = '20120816 00:00:' suite = TestSuite(starttime=ts + '00.000', endtime=ts + '59.999') suite.suites = [ TestSuite(starttime=ts + '00.000', endtime=ts + '30.000'), TestSuite(starttime=ts + '30.000', endtime=ts + '42.042') ] suite.suites[0].tests = [ TestCase(starttime=ts + '00.000', endtime=ts + '00.001', tags=['t1']), TestCase(starttime=ts + '00.001', endtime=ts + '01.001', tags=['t1', 't2']) ] suite.suites[1].tests = [ TestCase(starttime=ts + '30.000', endtime=ts + '40.000', tags=['t1', 't2', 't3']) ] suite.set_criticality(critical_tags=['t2']) self.stats = Statistics(suite, tag_stat_combine=[('?2', 'combined')])
def test_timestamps(self): suite = TestSuite(starttime='20111205 00:33:33.333') suite.keywords.create(starttime='20111205 00:33:33.334') suite.keywords[0].messages.create('Message', timestamp='20111205 00:33:33.343') suite.keywords[0].messages.create(level='DEBUG', timestamp='20111205 00:33:33.344') suite.tests.create(starttime='20111205 00:33:34.333') context = JsBuildingContext() model = SuiteBuilder(context).build(suite) self._verify_status(model[5], start=0) self._verify_status(model[-2][0][5], start=1) self._verify_mapped(model[-2][0][-1], context.strings, ((10, 2, 'Message'), (11, 1, ''))) self._verify_status(model[-3][0][5], start=1000)
def test_remove_passed_does_not_remove_when_test_failed(self): suite = TestSuite() test = suite.tests.create(status='FAIL') test.keywords.create(status='PASS').keywords.create() test.keywords.create(status='PASS').messages.create(message='message') failed_keyword = test.keywords.create(status='FAIL') failed_keyword.messages.create('mess') failed_keyword.keywords.create() self._remove_passed(suite) assert_equal(len(test.keywords[0].keywords), 1) assert_equal(len(test.keywords[1].messages), 1) assert_equal(len(test.keywords[2].messages), 1) assert_equal(len(test.keywords[2].keywords), 1)
def test_elapsed_from_get_attributes(self): for time, expected in [('00:00:00.000', '00:00:00'), ('00:00:00.001', '00:00:00'), ('00:00:00.500', '00:00:01'), ('00:00:00.999', '00:00:01'), ('00:00:01.000', '00:00:01'), ('00:00:01.001', '00:00:01'), ('00:00:01.499', '00:00:01'), ('00:00:01.500', '00:00:02'), ('01:59:59:499', '01:59:59'), ('01:59:59:500', '02:00:00')]: suite = TestSuite(starttime='20120817 00:00:00.000', endtime='20120817 ' + time) stat = Statistics(suite).suite.stat elapsed = stat.get_attributes(include_elapsed=True)['elapsed'] assert_equal(elapsed, expected, time)
def generate_suite(): suite = TestSuite(name='Root Suite') suite.set_criticality(critical_tags=['smoke']) s1 = suite.suites.create(name='First Sub Suite') s2 = suite.suites.create(name='Second Sub Suite') s11 = s1.suites.create(name='Sub Suite 1_1') s12 = s1.suites.create(name='Sub Suite 1_2') s13 = s1.suites.create(name='Sub Suite 1_3') s21 = s2.suites.create(name='Sub Suite 2_1') s11.tests = [TestCase(status='PASS'), TestCase(status='FAIL', tags=['t1'])] s12.tests = [TestCase(status='PASS', tags=['t_1','t2',]), TestCase(status='PASS', tags=['t1','smoke']), TestCase(status='FAIL', tags=['t1','t2','t3','smoke'])] s13.tests = [TestCase(status='PASS', tags=['t1','t 2','smoke'])] s21.tests = [TestCase(status='FAIL', tags=['t3','Smoke'])] return suite
def test_name_escaping(self): kw = Keyword( 'quote:"', 'and *url* https://url.com', '*"Doc"*', ) self._verify_keyword(kw, 0, 'quote:"', 'and *url* https://url.com', '<b>"Doc"</b>') test = TestCase( 'quote:" and *url* https://url.com', '*"Doc"*', ) self._verify_test(test, 'quote:" and *url* https://url.com', '<b>"Doc"</b>') suite = TestSuite( 'quote:" and *url* https://url.com', '*"Doc"*', ) self._verify_suite(suite, 'quote:" and *url* https://url.com', '<b>"Doc"</b>')