Index: turbogears/widgets/tests/test_widgets.py
===================================================================
--- turbogears/widgets/tests/test_widgets.py	(revision 6989)
+++ turbogears/widgets/tests/test_widgets.py	(working copy)
@@ -773,6 +773,33 @@
     assert w1.attrs == {'test':True}
     assert w2.attrs == {}
 
+def test_lazy_param_initialization():
+    touched = False
+    class Widget(widgets.Widget):
+        params = ['test']
+        def test(self):
+            global touched
+            touched = True
+    w = Widget()
+    assert not touched, 'Widget.test param must not be touched automatically!'
+
+def test_param_without_declaration():
+    class Widget(widgets.Widget):
+            params = ['test']
+    w = Widget()
+    assert w.test is None, 'w.test must be None'
+
+    class Widget(widgets.Widget):
+            params = ['test']
+    w = Widget(test=lambda:1)
+    assert w.test == 1, '%s != %s' % (w.test, 1)
+
+    class Widget(widgets.Widget):
+            params = ['test']
+    w = Widget()
+    w.test = lambda:1
+    assert w.test == 1, '%s != %s' % (w.test, 1)
+
 def test_param_descriptor_properties():
     class Wid(widgets.Widget):
         params = ['attrs']

