def to_dict(self, encoding='base64'): ''' Return a dictionary version of the report :param encoding: required encoding for the string values (default: 'base64') :rtype: dictionary :return: dictionary representation of the report ''' res = {} for k, v in self._data_fields.items(): if isinstance(v, (bytes, bytearray, six.string_types)): v = StrEncodeEncoder(encoding).encode(v).tobytes().decode() res[k] = v for k, v in self._sub_reports.items(): res[k] = v.to_dict(encoding) return res
class StrEncoderWrapperTest(BitsEncoderTest): def setUp(self): super(StrEncoderWrapperTest, self).setUp(StrEncoderWrapper) self._str_encoder = StrEncodeEncoder('base64') def _encode_func(self, bits): return self._str_encoder.encode(bits.tobytes()) def get_default_encoder(self): return self.cls(self._str_encoder) def testExceptionWhenBitsNotByteAligned(self): value = Bits(bin='1111111') uut = self.get_default_encoder() with self.assertRaises(KittyException): uut.encode(value)
def setUp(self): super(StrEncoderWrapperTest, self).setUp(StrEncoderWrapper) self._str_encoder = StrEncodeEncoder('base64')