1 #!/usr/bin/env python3.4 2 # 3 # Copyright 2016 - The Android Open Source Project 4 # 5 # Licensed under the Apache License, Version 2.0 (the "License"); 6 # you may not use this file except in compliance with the License. 7 # You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, software 12 # distributed under the License is distributed on an "AS IS" BASIS, 13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 # See the License for the specific language governing permissions and 15 # limitations under the License. 16 17 import unittest 18 19 from acts import records 20 from acts import signals 21 22 class ActsRecordsTest(unittest.TestCase): 23 """This test class tests the implementation of classes in acts.records. 24 """ 25 26 def setUp(self): 27 self.tn = "test_name" 28 self.details = "Some details about the test execution." 29 self.float_extra = 12345.56789 30 self.json_extra = {"ha": "whatever"} 31 32 def verify_record(self, record, result, details, extras): 33 # Verify each field. 34 self.assertEqual(record.test_name, self.tn) 35 self.assertEqual(record.result, result) 36 self.assertEqual(record.details, details) 37 self.assertEqual(record.extras, extras) 38 self.assertTrue(record.begin_time, "begin time should not be empty.") 39 self.assertTrue(record.end_time, "end time should not be empty.") 40 # UID is not used at the moment, should always be None. 41 self.assertIsNone(record.uid) 42 # Verify to_dict. 43 d = {} 44 d[records.TestResultEnums.RECORD_NAME] = self.tn 45 d[records.TestResultEnums.RECORD_RESULT] = result 46 d[records.TestResultEnums.RECORD_DETAILS] = details 47 d[records.TestResultEnums.RECORD_EXTRAS] = extras 48 d[records.TestResultEnums.RECORD_BEGIN_TIME] = record.begin_time 49 d[records.TestResultEnums.RECORD_END_TIME] = record.end_time 50 d[records.TestResultEnums.RECORD_UID] = None 51 d[records.TestResultEnums.RECORD_CLASS] = None 52 d[records.TestResultEnums.RECORD_EXTRA_ERRORS] = {} 53 actual_d = record.to_dict() 54 self.assertDictEqual(actual_d, d) 55 # Verify that these code paths do not cause crashes and yield non-empty 56 # results. 57 self.assertTrue(str(record), "str of the record should not be empty.") 58 self.assertTrue(repr(record), "the record's repr shouldn't be empty.") 59 self.assertTrue(record.json_str(), ("json str of the record should " 60 "not be empty.")) 61 62 """ Begin of Tests """ 63 def test_result_record_pass_none(self): 64 record = records.TestResultRecord(self.tn) 65 record.test_begin() 66 record.test_pass() 67 self.verify_record(record=record, 68 result=records.TestResultEnums.TEST_RESULT_PASS, 69 details=None, 70 extras=None) 71 72 def test_result_record_pass_with_float_extra(self): 73 record = records.TestResultRecord(self.tn) 74 record.test_begin() 75 s = signals.TestPass(self.details, self.float_extra) 76 record.test_pass(s) 77 self.verify_record(record=record, 78 result=records.TestResultEnums.TEST_RESULT_PASS, 79 details=self.details, 80 extras=self.float_extra) 81 82 def test_result_record_pass_with_json_extra(self): 83 record = records.TestResultRecord(self.tn) 84 record.test_begin() 85 s = signals.TestPass(self.details, self.json_extra) 86 record.test_pass(s) 87 self.verify_record(record=record, 88 result=records.TestResultEnums.TEST_RESULT_PASS, 89 details=self.details, 90 extras=self.json_extra) 91 92 def test_result_record_fail_none(self): 93 record = records.TestResultRecord(self.tn) 94 record.test_begin() 95 record.test_fail() 96 self.verify_record(record=record, 97 result=records.TestResultEnums.TEST_RESULT_FAIL, 98 details=None, 99 extras=None) 100 101 def test_result_record_fail_with_float_extra(self): 102 record = records.TestResultRecord(self.tn) 103 record.test_begin() 104 s = signals.TestFailure(self.details, self.float_extra) 105 record.test_fail(s) 106 self.verify_record(record=record, 107 result=records.TestResultEnums.TEST_RESULT_FAIL, 108 details=self.details, 109 extras=self.float_extra) 110 111 def test_result_record_fail_with_json_extra(self): 112 record = records.TestResultRecord(self.tn) 113 record.test_begin() 114 s = signals.TestFailure(self.details, self.json_extra) 115 record.test_fail(s) 116 self.verify_record(record=record, 117 result=records.TestResultEnums.TEST_RESULT_FAIL, 118 details=self.details, 119 extras=self.json_extra) 120 121 def test_result_record_skip_none(self): 122 record = records.TestResultRecord(self.tn) 123 record.test_begin() 124 record.test_skip() 125 self.verify_record(record=record, 126 result=records.TestResultEnums.TEST_RESULT_SKIP, 127 details=None, 128 extras=None) 129 130 def test_result_record_skip_with_float_extra(self): 131 record = records.TestResultRecord(self.tn) 132 record.test_begin() 133 s = signals.TestSkip(self.details, self.float_extra) 134 record.test_skip(s) 135 self.verify_record(record=record, 136 result=records.TestResultEnums.TEST_RESULT_SKIP, 137 details=self.details, 138 extras=self.float_extra) 139 140 def test_result_record_skip_with_json_extra(self): 141 record = records.TestResultRecord(self.tn) 142 record.test_begin() 143 s = signals.TestSkip(self.details, self.json_extra) 144 record.test_skip(s) 145 self.verify_record(record=record, 146 result=records.TestResultEnums.TEST_RESULT_SKIP, 147 details=self.details, 148 extras=self.json_extra) 149 150 if __name__ == "__main__": 151 unittest.main()