diff --git a/Milter/test.py b/Milter/test.py
index 55b27bffeeb416940598112dd0778ed0e0ce7474..846752e2d08723290fc682193d4c55af22c6f8a7 100644
--- a/Milter/test.py
+++ b/Milter/test.py
@@ -63,10 +63,7 @@ class TestBase(object):
       syms = self._symlist[stage]
       if syms is not None and name not in syms:
         return None
-    r = self._macros.get(name,None)
-    if r is not None:
-      return r.decode()
-    return r
+    return self._macros.get(name,None)
 
   def replacebody(self,chunk):
     if self._body:
diff --git a/Milter/testctx.py b/Milter/testctx.py
index 64b20c946fbca4b317d7790ab1ca215541010b72..b50dbb88941757960a0207950792d522d96b07cd 100644
--- a/Milter/testctx.py
+++ b/Milter/testctx.py
@@ -63,13 +63,13 @@ class TestCtx(object):
   def getsymval(self,name):
     stage = self._stage
     if stage >= 0:
+      try:
+        s = name.encode('utf8')
+      except: pass
       syms = self._symlist[stage]
-      if syms is not None and name not in syms:
+      if syms is not None and s not in syms:
         return None
-    r = self._macros.get(name,None)
-    if r is not None:
-      return r.decode()
-    return r
+    return self._macros.get(name,None)
 
   def _setsymval(self,name,val):
     self._macros[name] = val
diff --git a/testsample.py b/testsample.py
index 82977aef79a58760c3df5d29b89bcfa6b682988c..96f40cb03519fbb0626f67327ce9721fe5fb425c 100644
--- a/testsample.py
+++ b/testsample.py
@@ -46,7 +46,7 @@ class BMSMilterTestCase(unittest.TestCase):
     self.assertTrue(rc == Milter.CONTINUE)
     rc = milter.feedMsg(fname)
     self.assertTrue(milter.user == 'batman',"getsymval failed")
-    # setsymlist not called yet in sampleMilter
+    # setsymlist not working in TestBase
     #self.assertTrue(milter.auth_type != 'batcomputer',"setsymlist failed")
     self.assertTrue(rc == Milter.ACCEPT)
     self.assertTrue(milter._bodyreplaced,"Message body not replaced")