<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>pyspec</title><link>http://www.codeplex.com/pyspec/Project/ProjectRss.aspx</link><description>Behavior Driven Development Framework for Python.      PySpec has following specialty.      &amp;#42; Many kind of verification methods.   &amp;#42; More concrete error messages.   &amp;#42; Use decorators to define spec.   &amp;#42; Data driv...</description><item><title>New Post: tearDown example</title><link>http://www.codeplex.com/pyspec/Thread/View.aspx?ThreadId=34588</link><description>&lt;div style="line-height: normal;"&gt;You have done a pretty good job at showing some basic examples to get people's feet wet.&amp;nbsp; But I think you need to show the @spec_finalize and possibly @class_finalize in either the Usage or Tutorial pages as this will be their first impression and I would assume this will be one of their first questions is how to tear down.&lt;br&gt;
&lt;br&gt;
Just a thought.&lt;br&gt;
&lt;/div&gt;</description><author>gorshing</author><pubDate>Sat, 30 Aug 2008 01:58:55 GMT</pubDate><guid isPermaLink="false">New Post: tearDown example 20080830015855A</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/pyspec/SourceControl/ListDownloadableCommits.aspx</link><description>bug fix&amp;#13;&amp;#10;&amp;#42; error when wxpython was not installed&amp;#13;&amp;#10;&amp;#42; error when specs were ran on PyScripter</description><author>shibu</author><pubDate>Tue, 11 Mar 2008 17:16:39 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080311051639P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Home&amp;version=19</link><description>&lt;div class="wikidoc"&gt;
&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Home_jp&amp;amp;referringTitle=Home"&gt;Japanese&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;h1&gt;
Description
&lt;/h1&gt; &lt;br /&gt;PySpec is a Behavior Driven Development Framework for Python.  If this means nothing to you, see this uninteresting &lt;a href="http://behaviour-driven.org/" class="externalLink"&gt;explanation of Behavior Driven Development&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;PySpec has some notable features which include:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Many tools to help verify results&lt;/li&gt;&lt;li&gt;Concise, informative error messages&lt;/li&gt;&lt;li&gt;Uses decorators to define specifications&lt;/li&gt;&lt;li&gt;Data driven tests: test(@data_provider)&lt;/li&gt;&lt;li&gt;Includes Mock Object functionality&lt;/li&gt;&lt;li&gt;CLI &amp;amp; GUI spec runners (wxPython) &lt;/li&gt;&lt;li&gt;Support for running pyunit test cases within PySpec's specs&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h1&gt;
Wiki Contents
&lt;/h1&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Core documentation&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Usage&amp;amp;referringTitle=Home"&gt;Usage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Tutorial&amp;amp;referringTitle=Home"&gt;Tutorial&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Reference&amp;amp;referringTitle=Home"&gt;Reference&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Experimental documentation&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Design%20by%20Contract&amp;amp;referringTitle=Home"&gt;Design by Contract&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Legacy%20Code%20Testing&amp;amp;referringTitle=Home"&gt;Legacy Code Testing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Other documentation&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Why%20is%20PySpec%20so%20Fat%3f&amp;amp;referringTitle=Home"&gt;Why is PySpec so Fat?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h1&gt;
Sample Code
&lt;/h1&gt;&lt;pre&gt;
def add2(input):
  return input + 2
 
class add2_Behavior(object):
  @context
  def Function_add2_whose_input_is_3(self):
    self.result = add_2(3)
 
  @spec
  def should_return_5(self):
    About(self.result).should_equal(5)
&lt;/pre&gt; &lt;br /&gt;Then, if you run test, you would get the following result:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
Function add2 whose input is 3
  - should return 5 - OK
&lt;/pre&gt; &lt;br /&gt;I am not a native english speaker. Please give me more suitable word than &lt;b&gt;About&lt;/b&gt;.&lt;br /&gt;
&lt;/div&gt;</description><author>JerrySeutter</author><pubDate>Wed, 05 Mar 2008 04:56:53 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080305045653A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Home&amp;version=18</link><description>&lt;div class="wikidoc"&gt;
&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Home_jp&amp;amp;referringTitle=Home"&gt;Japanese&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;h1&gt;
Description
&lt;/h1&gt; &lt;br /&gt;PySpec is a Behavior Driven Development Framework for Python.  If this means nothing to you, see this uninteresting &lt;a href="http://behaviour-driven.org/" class="externalLink"&gt;explanation of Behavior Driven Development&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;PySpec has some notable features which include:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Many tools to help verify results.&lt;/li&gt;&lt;li&gt;Concise, informative error messages.&lt;/li&gt;&lt;li&gt;Uses decorators to define specifications&lt;/li&gt;&lt;li&gt;Data driven tests: test(@data_provider).&lt;/li&gt;&lt;li&gt;Includes Mock Object functionality.&lt;/li&gt;&lt;li&gt;CLI &amp;amp; GUI spec runners (wxPython) &lt;/li&gt;&lt;li&gt;Support for running pyunit test cases within PySpec's specs&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h1&gt;
Wiki Contents
&lt;/h1&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Fundamental&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Usage&amp;amp;referringTitle=Home"&gt;Usage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Tutorial&amp;amp;referringTitle=Home"&gt;Tutorial&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Reference&amp;amp;referringTitle=Home"&gt;Reference&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Experimental&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Design%20by%20Contract&amp;amp;referringTitle=Home"&gt;Design by Contract&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Legacy%20Code%20Testing&amp;amp;referringTitle=Home"&gt;Legacy Code Testing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Other&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Why%20is%20PySpec%20so%20Fat%3f&amp;amp;referringTitle=Home"&gt;Why is PySpec so Fat?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h1&gt;
Sample Code
&lt;/h1&gt;&lt;pre&gt;
def add2(input):
  return input + 2
 
class add2_Behavior(object):
  @context
  def Function_add2_whose_input_is_3(self):
    self.result = add_2(3)
 
  @spec
  def should_return_5(self):
    About(self.result).should_equal(5)
&lt;/pre&gt; &lt;br /&gt;Then, if you run test, you would get the following result:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
Function add2 whose input is 3
  - should return 5 - OK
&lt;/pre&gt; &lt;br /&gt;I am not a native english speaker. Please give me more suitable word than &lt;b&gt;About&lt;/b&gt;.&lt;br /&gt;
&lt;/div&gt;</description><author>JerrySeutter</author><pubDate>Wed, 05 Mar 2008 04:54:11 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080305045411A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Home&amp;version=17</link><description>&lt;div class="wikidoc"&gt;
&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Home_jp&amp;amp;referringTitle=Home"&gt;Japanese&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;h1&gt;
Project Description
&lt;/h1&gt; &lt;br /&gt;PySpec is a Behavior Driven Development Framework for Python.  If this means nothing to you, see this uninteresting &lt;a href="http://behaviour-driven.org/" class="externalLink"&gt;explanation of Behavior Driven Development&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;PySpec has some notable features which include:&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Many tools to help verify results.&lt;/li&gt;&lt;li&gt;Concise, informative error messages.&lt;/li&gt;&lt;li&gt;Uses decorators to define specifications&lt;/li&gt;&lt;li&gt;Data driven tests: test(@data_provider).&lt;/li&gt;&lt;li&gt;Includes Mock Object functionality.&lt;/li&gt;&lt;li&gt;CLI &amp;amp; GUI spec runners (wxPython) &lt;/li&gt;&lt;li&gt;Support for running pyunit test cases within PySpec's specs&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h1&gt;
Wiki Contents
&lt;/h1&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Fundamental&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Usage&amp;amp;referringTitle=Home"&gt;Usage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Tutorial&amp;amp;referringTitle=Home"&gt;Tutorial&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Reference&amp;amp;referringTitle=Home"&gt;Reference&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Experimental&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Design%20by%20Contract&amp;amp;referringTitle=Home"&gt;Design by Contract&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Legacy%20Code%20Testing&amp;amp;referringTitle=Home"&gt;Legacy Code Testing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Other&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Why%20is%20PySpec%20so%20Fat%3f&amp;amp;referringTitle=Home"&gt;Why is PySpec so Fat?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h1&gt;
Sample Code
&lt;/h1&gt;&lt;pre&gt;
def add2(input):
  return input + 2
 
class add2_Behavior(object):
  @context
  def Function_add2_whose_input_is_3(self):
    self.result = add_2(3)
 
  @spec
  def should_return_5(self):
    About(self.result).should_equal(5)
&lt;/pre&gt; &lt;br /&gt;Then, if you run test, you would get the following result:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
Function add2 whose input is 3
  - should return 5 - OK
&lt;/pre&gt; &lt;br /&gt;I am not a native english speaker. Please give me more suitable word than &lt;b&gt;About&lt;/b&gt;.&lt;br /&gt;
&lt;/div&gt;</description><author>JerrySeutter</author><pubDate>Wed, 05 Mar 2008 04:51:40 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080305045140A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Home&amp;version=16</link><description>&lt;div class="wikidoc"&gt;
&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Home_jp&amp;amp;referringTitle=Home"&gt;Japanese&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;h1&gt;
Project Description
&lt;/h1&gt; &lt;br /&gt;PySpec is a Behavior Driven Development Framework for Python.  If this means nothing to you, see this uninteresting &lt;a href="http://behaviour-driven.org/" class="externalLink"&gt;explanation of Behavior Driven Development&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;PySpec has following specialty.&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Many kind of verification methods.&lt;/li&gt;&lt;li&gt;More concrete error messages.&lt;/li&gt;&lt;li&gt;Use decorators to define spec.&lt;/li&gt;&lt;li&gt;Data driven test(@data_provider).&lt;/li&gt;&lt;li&gt;Mock Objects included.&lt;/li&gt;&lt;li&gt;CUI &amp;amp; GUI spec runner(wxPython) &lt;/li&gt;&lt;li&gt;Support running pyunit test cases with PySpec's specs&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h1&gt;
Wiki Contents
&lt;/h1&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Fundamental&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Usage&amp;amp;referringTitle=Home"&gt;Usage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Tutorial&amp;amp;referringTitle=Home"&gt;Tutorial&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Reference&amp;amp;referringTitle=Home"&gt;Reference&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Experimental&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Design%20by%20Contract&amp;amp;referringTitle=Home"&gt;Design by Contract&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Legacy%20Code%20Testing&amp;amp;referringTitle=Home"&gt;Legacy Code Testing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Other&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Why%20is%20PySpec%20so%20Fat%3f&amp;amp;referringTitle=Home"&gt;Why is PySpec so Fat?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h1&gt;
Sample Code
&lt;/h1&gt;&lt;pre&gt;
def add2(input):
  return input + 2
 
class add2_Behavior(object):
  @context
  def Function_add2_whose_input_is_3(self):
    self.result = add_2(3)
 
  @spec
  def should_return_5(self):
    About(self.result).should_equal(5)
&lt;/pre&gt; &lt;br /&gt;Then, if you run test, you would get the following result:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
Function add2 whose input is 3
  - should return 5 - OK
&lt;/pre&gt; &lt;br /&gt;I am not a native english speaker. Please give me more suitable word than &lt;b&gt;About&lt;/b&gt;.&lt;br /&gt;
&lt;/div&gt;</description><author>JerrySeutter</author><pubDate>Wed, 05 Mar 2008 04:48:13 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080305044813A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Home&amp;version=15</link><description>&lt;div class="wikidoc"&gt;
&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Home_jp&amp;amp;referringTitle=Home"&gt;Japanese&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;h1&gt;
Project Description
&lt;/h1&gt; &lt;br /&gt;PySpec is a Behavior Driven Development Framework for Python.  If this means nothing to you, check out this very uninteresting &lt;a href="http://behaviour-driven.org/%20explanation%20of%20Behaviour%20Driven%20Development" class="externalLink"&gt;http://behaviour-driven.org/ explanation of Behaviour Driven Development&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;PySpec has following specialty.&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Many kind of verification methods.&lt;/li&gt;&lt;li&gt;More concrete error messages.&lt;/li&gt;&lt;li&gt;Use decorators to define spec.&lt;/li&gt;&lt;li&gt;Data driven test(@data_provider).&lt;/li&gt;&lt;li&gt;Mock Objects included.&lt;/li&gt;&lt;li&gt;CUI &amp;amp; GUI spec runner(wxPython) &lt;/li&gt;&lt;li&gt;Support running pyunit test cases with PySpec's specs&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h1&gt;
Wiki Contents
&lt;/h1&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Fundamental&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Usage&amp;amp;referringTitle=Home"&gt;Usage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Tutorial&amp;amp;referringTitle=Home"&gt;Tutorial&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Reference&amp;amp;referringTitle=Home"&gt;Reference&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Experimental&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Design%20by%20Contract&amp;amp;referringTitle=Home"&gt;Design by Contract&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Legacy%20Code%20Testing&amp;amp;referringTitle=Home"&gt;Legacy Code Testing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Other&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Why%20is%20PySpec%20so%20Fat%3f&amp;amp;referringTitle=Home"&gt;Why is PySpec so Fat?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h1&gt;
Sample Code
&lt;/h1&gt;&lt;pre&gt;
def add2(input):
  return input + 2
 
class add2_Behavior(object):
  @context
  def Function_add2_whose_input_is_3(self):
    self.result = add_2(3)
 
  @spec
  def should_return_5(self):
    About(self.result).should_equal(5)
&lt;/pre&gt; &lt;br /&gt;Then, if you run test, you would get the following result:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
Function add2 whose input is 3
  - should return 5 - OK
&lt;/pre&gt; &lt;br /&gt;I am not a native english speaker. Please give me more suitable word than &lt;b&gt;About&lt;/b&gt;.&lt;br /&gt;
&lt;/div&gt;</description><author>JerrySeutter</author><pubDate>Wed, 05 Mar 2008 04:45:31 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080305044531A</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/pyspec/SourceControl/ListDownloadableCommits.aspx</link><description>&amp;#42; Fix CUI Runner&amp;#13;&amp;#10;&amp;#42;&amp;#42; Fix --encode&amp;#13;&amp;#10;&amp;#42;&amp;#42; Fix --version&amp;#13;&amp;#10;&amp;#42; Add localization support&amp;#40;English and Japanese&amp;#41;&amp;#13;&amp;#10;&amp;#13;&amp;#10;You can change error messages.&amp;#13;&amp;#10;&amp;#36; python behavior_some.py --language ja --encode ShiftJIS&amp;#13;&amp;#10;&amp;#13;&amp;#10;If you want to add your own language, see pyspec&amp;#47;embedded&amp;#47;languages folder&amp;#13;&amp;#10;</description><author>shibu</author><pubDate>Thu, 28 Feb 2008 15:44:50 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080228034450P</guid></item><item><title>UPDATED RELEASE: PySpec 0.54</title><link>http://www.codeplex.com/pyspec/Release/ProjectReleases.aspx?ReleaseId=10994</link><description>&amp;#33; Version 0.54&amp;#40;2008&amp;#47;03&amp;#47;12&amp;#41;&lt;br /&gt;&lt;br /&gt;&amp;#42; Support for doctest on PySpec&lt;br /&gt;&amp;#42; Error message localization &lt;br /&gt;&amp;#42; Fix GUI runner&lt;br /&gt;&amp;#42;&amp;#42; Support legacy testing&lt;br /&gt;&amp;#42;&amp;#42; Fix many part of the code</description><author></author><pubDate>Sat, 23 Feb 2008 08:17:19 GMT</pubDate><guid isPermaLink="false">UPDATED RELEASE: PySpec 0.54 20080223081719A</guid></item><item><title>UPDATED WIKI: Home_jp</title><link>http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Home_jp&amp;version=3</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
プロジェクト概要
&lt;/h1&gt; &lt;br /&gt;PySpecはPython用のビヘイビア(振る舞い)駆動開発フレームワークです。&lt;br /&gt; &lt;br /&gt;PySpecは以下のような特徴があります。&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;豊富な検証メソッド&lt;/li&gt;&lt;li&gt;わかりやすいエラーメッセージ&lt;/li&gt;&lt;li&gt;デコレータを使用した仕様の宣言&lt;/li&gt;&lt;li&gt;データ駆動のテスト(@data_provider)&lt;/li&gt;&lt;li&gt;モックオブジェクトを搭載&lt;/li&gt;&lt;li&gt;CUI &amp;amp; GUIのテストランナープログラム(wxPythonを利用) &lt;/li&gt;&lt;li&gt;pyunitのテストケースも実行可能&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h1&gt;
Wikiの目次
&lt;/h1&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;基本機能&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=usage_jp&amp;amp;referringTitle=Home_jp"&gt;使用法&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Tutorial&amp;amp;referringTitle=Home_jp"&gt;チュートリアル(英語)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Reference_jp&amp;amp;referringTitle=Home_jp"&gt;リファレンス&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;実験的な機能&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Design%20by%20Contract&amp;amp;referringTitle=Home_jp"&gt;Design by Contract(英語)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Legacy%20Code%20Testing&amp;amp;referringTitle=Home_jp"&gt;レガシーコードのテスト(英語)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;その他&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Why%20is%20PySpec%20so%20Fat%3f&amp;amp;referringTitle=Home_jp"&gt;なぜPySpecはこんなにファイルサイズが大きいの？(英語)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h1&gt;
サンプルコード
&lt;/h1&gt;&lt;pre&gt;
def add2(input):
  &amp;quot;&amp;quot;&amp;quot;2を足します&amp;quot;&amp;quot;&amp;quot;
  return input + 2
 
class add2_Behavior(object):
  @context
  def Function_add2_whose_input_is_3(self):
    &amp;quot;&amp;quot;&amp;quot;add2関数に3を渡す&amp;quot;&amp;quot;&amp;quot;
    self.result = add2(3)
 
  @spec
  def should_return_5(self):
    &amp;quot;&amp;quot;&amp;quot;返り値は5になる&amp;quot;&amp;quot;&amp;quot;
    About(self.result).should_equal(5)
&lt;/pre&gt; &lt;br /&gt;この仕様を実行すると以下のように出力されます:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
add2関数に3を渡す
  - 返り値は5になる - OK
&lt;/pre&gt;
&lt;/div&gt;</description><author>shibu</author><pubDate>Fri, 22 Feb 2008 12:25:33 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home_jp 20080222122533P</guid></item><item><title>UPDATED WIKI: Home_jp</title><link>http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Home_jp&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
プロジェクト概要
&lt;/h1&gt; &lt;br /&gt;PySpecはPython用のビヘイビア(振る舞い)駆動開発フレームワークです。&lt;br /&gt; &lt;br /&gt;PySpecは以下のような特徴があります。&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;豊富な検証メソッド&lt;/li&gt;&lt;li&gt;わかりやすいエラーメッセージ&lt;/li&gt;&lt;li&gt;デコレータを使用した仕様の宣言&lt;/li&gt;&lt;li&gt;データ駆動のテスト(@data_provider)&lt;/li&gt;&lt;li&gt;モックオブジェクトを搭載&lt;/li&gt;&lt;li&gt;CUI &amp;amp; GUIのテストランナープログラム(wxPythonを利用) &lt;/li&gt;&lt;li&gt;pyunitのテストケースも実行可能&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h1&gt;
Wikiの目次
&lt;/h1&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;基本機能&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=usage_jp&amp;amp;referringTitle=Home_jp"&gt;使用法&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Tutorial&amp;amp;referringTitle=Home_jp"&gt;チュートリアル(英語)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Reference_jp&amp;amp;referringTitle=Home_jp"&gt;リファレンス&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;実験的な機能&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Design%20by%20Contract&amp;amp;referringTitle=Home_jp"&gt;Design by Contract(英語)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Legacy%20Code%20Testing&amp;amp;referringTitle=Home_jp"&gt;レガシーコードのテスト(英語)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;その他&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=%u306a%u305cPySpec%u306f%u3053%u3093%u306a%u306b%u30d5%u30a1%u30a4%u30eb%u30b5%u30a4%u30ba%u304c%u5927%u304d%u3044%u306e%uff1f%28%u82f1%u8a9e%29&amp;amp;referringTitle=Home_jp"&gt;なぜPySpecはこんなにファイルサイズが大きいの？(英語)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h1&gt;
サンプルコード
&lt;/h1&gt;&lt;pre&gt;
def add2(input):
  &amp;quot;&amp;quot;&amp;quot;2を足します&amp;quot;&amp;quot;&amp;quot;
  return input + 2
 
class add2_Behavior(object):
  @context
  def Function_add2_whose_input_is_3(self):
    &amp;quot;&amp;quot;&amp;quot;add2関数に3を渡す&amp;quot;&amp;quot;&amp;quot;
    self.result = add2(3)
 
  @spec
  def should_return_5(self):
    &amp;quot;&amp;quot;&amp;quot;返り値は5になる&amp;quot;&amp;quot;&amp;quot;
    About(self.result).should_equal(5)
&lt;/pre&gt; &lt;br /&gt;この仕様を実行すると以下のように出力されます:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
add2関数に3を渡す
  - 返り値は5になる - OK
&lt;/pre&gt;
&lt;/div&gt;</description><author>shibu</author><pubDate>Fri, 22 Feb 2008 12:24:43 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home_jp 20080222122443P</guid></item><item><title>CREATED RELEASE: PySpec 0.54</title><link>http://www.codeplex.com/pyspec/Release/ProjectReleases.aspx?ReleaseId=10994</link><description>&amp;#33; Version 0.54&amp;#40;2008&amp;#47;03&amp;#47;12&amp;#41;&lt;br /&gt;&lt;br /&gt;&amp;#42; Support for doctest on PySpec&lt;br /&gt;&amp;#42; Fix GUI runner&lt;br /&gt;&amp;#42;&amp;#42; Support legacy testing&lt;br /&gt;&amp;#42;&amp;#42; Fix many part of the code</description><author></author><pubDate>Fri, 22 Feb 2008 12:08:15 GMT</pubDate><guid isPermaLink="false">CREATED RELEASE: PySpec 0.54 20080222120815P</guid></item><item><title>UPDATED RELEASE: PySpec 0.53 (2 22, 2008)</title><link>http://www.codeplex.com/pyspec/Release/ProjectReleases.aspx?ReleaseId=10961</link><description>&amp;#33; Version 0.53&lt;br /&gt;&lt;br /&gt;&amp;#42; Support for writing specs of legacy code.&lt;br /&gt;&amp;#42;&amp;#42; &amp;#123;&amp;#123;About&amp;#40;&amp;#41;.should_not_be_changed&amp;#40;&amp;#41;&amp;#125;&amp;#125;&lt;br /&gt;&amp;#42;&amp;#42; &amp;#123;&amp;#123;pyspec.legacy_code.test_proxy&amp;#40;&amp;#41;&amp;#125;&amp;#125;&lt;br /&gt;&lt;br /&gt;These functions helps you to write specs of existing systems that have no tests.&lt;br /&gt;These functions record the objects behavior. Exist program become specs.&lt;br /&gt;&lt;br /&gt;&amp;#42; Support function for finding bugs.&lt;br /&gt;&amp;#42;&amp;#42; dprint&amp;#40;&amp;#41;&lt;br /&gt;&lt;br /&gt;This function is used for finding bugs. It&amp;#39;s args format is similar to print&amp;#40;&amp;#41; of Python3000.&lt;br /&gt;It shows the file name and the expression and the value.</description><author></author><pubDate>Fri, 22 Feb 2008 12:01:19 GMT</pubDate><guid isPermaLink="false">UPDATED RELEASE: PySpec 0.53 (2 22, 2008) 20080222120119P</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/pyspec/SourceControl/ListDownloadableCommits.aspx</link><description>0.53 released.</description><author>shibu</author><pubDate>Fri, 22 Feb 2008 12:00:20 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080222120020P</guid></item><item><title>UPDATED WIKI: Legacy Code Testing</title><link>http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Legacy Code Testing&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
PySpec Legacy Code Test Guide
&lt;/h1&gt; &lt;br /&gt;&lt;table&gt;
&lt;tr&gt;
&lt;td&gt; &lt;b&gt;Author&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Shibukawa Yoshiki &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; &lt;b&gt;Contact&lt;/b&gt; &lt;/td&gt;&lt;td&gt; yoshiki at shibu.jp &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; &lt;b&gt;Copyright&lt;/b&gt; &lt;/td&gt;&lt;td&gt; This document has been placed in the public domain. &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;h2&gt;
Contents
&lt;/h2&gt;&lt;a name="contents"&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#reference"&gt;Reference&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#about-actual-value-should-not-be-changed"&gt; About('actual value').should_not_be_changed() &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#test-proxy"&gt; test_proxy() &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;&lt;a href="#usage"&gt;Usage&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#reset-history"&gt;Reset History&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#show-history"&gt;Show History&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;&lt;a href="#sample-code"&gt;Sample Code&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#story"&gt;Story&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#st-step"&gt;1st Step&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#nd-step"&gt;2nd Step&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#rd-step"&gt;3rd Step&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#th-step"&gt;4th Step&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt; &lt;i&gt;This feature is experimental.&lt;/i&gt; &lt;br /&gt; &lt;br /&gt;This sample file is  &lt;span class="codeInline"&gt;pyspec/sample/sample_dbc.py&lt;/span&gt;.&lt;br /&gt; &lt;br /&gt;&lt;a name="reference"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;
Reference
&lt;/h3&gt; &lt;br /&gt;&lt;a name="about-actual-value-should-not-be-changed"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;
 &lt;span class="codeInline"&gt;About('actual value').should_not_be_changed()&lt;/span&gt; 
&lt;/h4&gt; &lt;br /&gt;This method is used for assertion not to change the value.&lt;br /&gt;When you would run tests at first, PySpec would record the&lt;br /&gt;value and the spec's result would become 'ignored'.&lt;br /&gt;After that, the recorded value will be used for checking&lt;br /&gt;the value.&lt;br /&gt; &lt;br /&gt;sample:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
from pyspec.embedded import *
from pyspec.embedded.dbc import DbCobject, DbC
 
class Behavior_CARDatabase():
    @spec
    def You_should_be_able_to_see_power(self):
        G37 = CARDatabase.get(&amp;quot;G37&amp;quot;)
        # if change the result, this spec will fail
        About(G37.get_power()).should_not_be_changed()
&lt;/pre&gt; &lt;br /&gt;If you change the module name or the class name or the spec name or&lt;br /&gt;the expression in  &lt;span class="codeInline"&gt;About()&lt;/span&gt;  , PySpec can't find the recorded values.&lt;br /&gt;So the spec always become 'ignored' and records the value whenever&lt;br /&gt;you change these names/expressions.&lt;br /&gt;&lt;table&gt;
&lt;tr&gt;
&lt;td&gt; &lt;b&gt;Option&lt;/b&gt; &lt;/td&gt;&lt;td&gt;&lt;b&gt;Description&lt;/b&gt; &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;  &lt;span class="codeInline"&gt;reset=False&lt;/span&gt;  &lt;/td&gt;&lt;td&gt;If this parameter is True, PySpec reset the record. &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;&lt;a name="test-proxy"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;
 &lt;span class="codeInline"&gt;test_proxy()&lt;/span&gt; 
&lt;/h4&gt; &lt;br /&gt;This function is defined at  &lt;span class="codeInline"&gt;pyspec.legacy_code&lt;/span&gt; .&lt;br /&gt; &lt;br /&gt;This function creates proxy object and wraps the target object in the proxy.&lt;br /&gt;At first you call the function of the target object through this proxy,&lt;br /&gt;a history of function calls would be recorded and the spec would be 'ignored'&lt;br /&gt;(neither success nor fail). Next time you run spec, PySpec verifies the&lt;br /&gt;function calls.&lt;br /&gt; &lt;br /&gt;This function is useful for checking the source code is not broken during&lt;br /&gt;refactoring/enhancing activities.&lt;br /&gt;&lt;table&gt;
&lt;tr&gt;
&lt;td&gt; &lt;b&gt;Option&lt;/b&gt; &lt;/td&gt;&lt;td&gt;&lt;b&gt;Description&lt;/b&gt; &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;  &lt;span class="codeInline"&gt;target_object&lt;/span&gt;  &lt;/td&gt;&lt;td&gt;The object you want to &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;  &lt;span class="codeInline"&gt;hook_methods=[]&lt;/span&gt;  &lt;/td&gt;&lt;td&gt;The method name list you want to record(default=all methods) &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;  &lt;span class="codeInline"&gt;runtime_option=None&lt;/span&gt;  &lt;/td&gt;&lt;td&gt;This is backdoor for testing PySpec itself(see  &lt;span class="codeInline"&gt;behavior_pyspec_legacy_code.py&lt;/span&gt; ) &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;  &lt;span class="codeInline"&gt;check_return=True&lt;/span&gt;  &lt;/td&gt;&lt;td&gt;This flag controls that PySpec verifies return values or doesn't &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;  &lt;span class="codeInline"&gt;check_args=True&lt;/span&gt;  &lt;/td&gt;&lt;td&gt;This flag controls that PySpec verifies method arguments or doesn't &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;sample:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
@spec
def check_log_value():
    log = StringIO.StringIO()
    log = test_proxy(log) # create log proxy
    write_log(log)
 
def write_log(log):
    log.write(name())   # recording/verifying ``write()`` method call
    log.write(score())  # recording/verifying ``write()`` method call
&lt;/pre&gt; &lt;br /&gt;&lt;a name="usage"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;
Usage
&lt;/h3&gt; &lt;br /&gt;You can control these features in command line. It's important to use them.&lt;br /&gt;&lt;table&gt;
&lt;tr&gt;
&lt;td&gt; &lt;b&gt;Option&lt;/b&gt; &lt;/td&gt;&lt;td&gt;&lt;b&gt;Description&lt;/b&gt; &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;  &lt;span class="codeInline"&gt;-r, --reset-legacy-data&lt;/span&gt;  &lt;/td&gt;&lt;td&gt;Reset the all recorded values. &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;  &lt;span class="codeInline"&gt;--show-legacy-data&lt;/span&gt;  &lt;/td&gt;&lt;td&gt;Show the function call history in reST format. &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;&lt;a name="reset-history"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;
Reset History
&lt;/h4&gt; &lt;br /&gt;After big refactoring, the behavior of your code wouldn't match the record.&lt;br /&gt;In this case, these specs would be failed every time. If your other specs have&lt;br /&gt;passed, you should reset the history. The new behavior after the refactoring&lt;br /&gt;becomes new code navigator.&lt;br /&gt; &lt;br /&gt;&lt;a name="show-history"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;
Show History
&lt;/h4&gt; &lt;br /&gt;The history record of your code is good information to analyze it.&lt;br /&gt;You can see the history whenever you want.&lt;br /&gt; &lt;br /&gt;&lt;a name="sample-code"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;
Sample Code
&lt;/h3&gt; &lt;br /&gt;There is a sample of legacy support function. See  &lt;span class="codeInline"&gt;sample/rst2codeplex&lt;/span&gt; .&lt;br /&gt;If you want to run this sample, you need to install  &lt;span class="codeInline"&gt;docutils&lt;/span&gt; .&lt;br /&gt; &lt;br /&gt;&lt;a name="story"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;
Story
&lt;/h4&gt; &lt;br /&gt;Create new program from existing source code. New program generates&lt;br /&gt;CodePlex wiki format from reStructuredText. To create it, you use&lt;br /&gt;the  &lt;span class="codeInline"&gt;docutils/writer/html4css1&lt;/span&gt;  module.&lt;br /&gt; &lt;br /&gt;Actually, docutils is well tested product. But in this sample,&lt;br /&gt;it was treated as legacy product (that had no tests).&lt;br /&gt; &lt;br /&gt;&lt;a name="st-step"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;
1st Step
&lt;/h4&gt; &lt;br /&gt;At first, you need to find entry point. It's important step.&lt;br /&gt;If there is no entry point, you have to create or modify it.&lt;br /&gt;Docutils has useful function  &lt;span class="codeInline"&gt;publish_string()&lt;/span&gt; .&lt;br /&gt;This sample uses the function.&lt;br /&gt; &lt;br /&gt;If you create it, DI or some technology help you.&lt;br /&gt;Actually, you should create the entry point after running&lt;br /&gt;the first spec and fail (It's basic rule of TDD).&lt;br /&gt; &lt;br /&gt;&lt;a name="nd-step"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;
2nd Step
&lt;/h4&gt; &lt;br /&gt;You would write two specs. One is a basic style spec. And another spec uses&lt;br /&gt;the legacy code support method. Of course you can put together these methods.&lt;br /&gt;But you shouldn't do that. These methods have there own roles.&lt;br /&gt; &lt;br /&gt;spec:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
class Behavior_rst2codeplex(object):
    source_title = &amp;quot;&amp;quot;&amp;quot;
==========
Test Title
==========
&amp;quot;&amp;quot;&amp;quot;
 
    @context(group=1)
    def Title_source(self):
        self.result = publish_string(self.source_title, writer_name=&amp;quot;codeplex&amp;quot;,
                writer=Writer(translator=CodePlexTranslator))
 
    @spec(group=1)
    def can_convert_to_wiki1(self):
        About(self.result).should_include(&amp;quot;! Test Title&amp;quot;)
 
    @context(group=2)
    def Method_calls_in_createing_title(self):
        def TranslatorWithProxy(document):
            translator = CodePlexTranslator(document)
            return test_proxy(translator, check_return=False)
        self.writer = Writer(translator=TranslatorWithProxy)
 
    @spec(group=2)
    def should_not_changed_for_title(self):
        print publish_string(self.source_title, writer_name=&amp;quot;codeplex&amp;quot;,
                writer=self.writer)
&lt;/pre&gt; &lt;br /&gt;&lt;a name="rd-step"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;
3rd Step
&lt;/h4&gt; &lt;br /&gt;If you run this spec, the result would become fail. Copy&lt;br /&gt; &lt;span class="codeInline"&gt;docutils/writer/html4css1&lt;/span&gt;  into your workspace and rename it.&lt;br /&gt;&lt;table&gt;
&lt;tr&gt;
&lt;td&gt; &lt;b&gt;Before&lt;/b&gt; &lt;/td&gt;&lt;td&gt;&lt;b&gt;After&lt;/b&gt; &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;  &lt;span class="codeInline"&gt;__init__.py&lt;/span&gt;  &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt;rst2codeplex.py&lt;/span&gt;  &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;  &lt;span class="codeInline"&gt;HTMLTranslator&lt;/span&gt;  &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt;CodePlexTranslator&lt;/span&gt;  &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;After initialize steps, you can run these specs again.&lt;br /&gt;If errors become failures, you can see the function call history record:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
$ python behavior_rst2codeplex.py --show-legacy-data
 
method: method_call_should_not_changed_for_title
================================================
 
dispatch_visit(&amp;lt;document ids=&amp;quot;test-title&amp;quot; names=&amp;quot;test\ title&amp;quot; source=&amp;quot;&amp;lt;string&amp;gt;&amp;quot; title=&amp;quot;Test Title&amp;quot;&amp;gt;&amp;lt;title&amp;gt;Test Title&amp;lt;/title&amp;gt;&amp;lt;/document&amp;gt;)
dispatch_visit(&amp;lt;title&amp;gt;Test Title&amp;lt;/title&amp;gt;)
dispatch_visit(Test Title)
dispatch_departure(Test Title)
dispatch_departure(&amp;lt;title&amp;gt;Test Title&amp;lt;/title&amp;gt;)
dispatch_departure(&amp;lt;document ids=&amp;quot;test-title&amp;quot; names=&amp;quot;test\ title&amp;quot; source=&amp;quot;&amp;lt;string&amp;gt;&amp;quot; title=&amp;quot;Test Title&amp;quot;&amp;gt;&amp;lt;title&amp;gt;Test Title&amp;lt;/title&amp;gt;&amp;lt;/document&amp;gt;)
astext()
&lt;/pre&gt; &lt;br /&gt;From this information and the source code, you can understand the function&lt;br /&gt; &lt;span class="codeInline"&gt;visit_title()&lt;/span&gt;  creates the title string. After modifying the part of&lt;br /&gt;the method, the first spec would pass and second spec would fail.&lt;br /&gt;This legacy support refers old code behavior. So if the behavior is changed&lt;br /&gt;after refactoring or modification, this spec may be fail.&lt;br /&gt; &lt;br /&gt; &lt;span class="codeInline"&gt;rst2codeplex.py&lt;/span&gt; :&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
elif isinstance(node.parent, nodes.document):
    self.body.append('! ')
    self.context.append('\n\n')
    self.in_document_title = len(self.body)
&lt;/pre&gt; &lt;br /&gt;&lt;a name="th-step"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;
4th Step
&lt;/h4&gt; &lt;br /&gt;Now, you watched the first spec was passed.&lt;br /&gt;You reset the old function call history record:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
$ python behavior_rst2codeplex.py --reset-legacy-data
&lt;/pre&gt; &lt;br /&gt;The second spec refers new behavior. This spec can detect unexpected part&lt;br /&gt;of the code base was broken or not. It is one of insurance.&lt;br /&gt;If you repeat 2nd step-4th step, you will have many normal style specs and&lt;br /&gt;you can throw these insurance into a trash box.&lt;br /&gt;
&lt;/div&gt;</description><author>shibu</author><pubDate>Fri, 22 Feb 2008 11:54:00 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Legacy Code Testing 20080222115400A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Home&amp;version=14</link><description>&lt;div class="wikidoc"&gt;
&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Home_jp&amp;amp;referringTitle=Home"&gt;Japanese&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;h1&gt;
Project Description
&lt;/h1&gt; &lt;br /&gt;PySpec is the Behavior Driven Development Framework for Python.&lt;br /&gt; &lt;br /&gt;PySpec has following specialty.&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Many kind of verification methods.&lt;/li&gt;&lt;li&gt;More concrete error messages.&lt;/li&gt;&lt;li&gt;Use decorators to define spec.&lt;/li&gt;&lt;li&gt;Data driven test(@data_provider).&lt;/li&gt;&lt;li&gt;Mock Objects included.&lt;/li&gt;&lt;li&gt;CUI &amp;amp; GUI spec runner(wxPython) &lt;/li&gt;&lt;li&gt;Support running pyunit test cases with PySpec's specs&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h1&gt;
Wiki Contents
&lt;/h1&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Fundamental&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Usage&amp;amp;referringTitle=Home"&gt;Usage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Tutorial&amp;amp;referringTitle=Home"&gt;Tutorial&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Reference&amp;amp;referringTitle=Home"&gt;Reference&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Experimental&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Design%20by%20Contract&amp;amp;referringTitle=Home"&gt;Design by Contract&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Legacy%20Code%20Testing&amp;amp;referringTitle=Home"&gt;Legacy Code Testing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Other&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Why%20is%20PySpec%20so%20Fat%3f&amp;amp;referringTitle=Home"&gt;Why is PySpec so Fat?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h1&gt;
Sample Code
&lt;/h1&gt;&lt;pre&gt;
def add2(input):
  return input + 2
 
class add2_Behavior(object):
  @context
  def Function_add2_whose_input_is_3(self):
    self.result = add_2(3)
 
  @spec
  def should_return_5(self):
    About(self.result).should_equal(5)
&lt;/pre&gt; &lt;br /&gt;Then, if you run test, you would get the following result:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
Function add2 whose input is 3
  - should return 5 - OK
&lt;/pre&gt; &lt;br /&gt;I am not a native english speaker. Please give me more suitable word than &lt;b&gt;About&lt;/b&gt;.&lt;br /&gt;
&lt;/div&gt;</description><author>shibu</author><pubDate>Fri, 22 Feb 2008 11:46:30 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080222114630A</guid></item><item><title>UPDATED WIKI: Home_jp</title><link>http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Home_jp&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
プロジェクト概要
&lt;/h1&gt; &lt;br /&gt;PySpecはPython用のビヘイビア(振る舞い)駆動開発フレームワークです。&lt;br /&gt; &lt;br /&gt;PySpecは以下のような特徴があります。&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;豊富な検証メソッド&lt;/li&gt;&lt;li&gt;わかりやすいエラーメッセージ&lt;/li&gt;&lt;li&gt;デコレータを使用した仕様の宣言&lt;/li&gt;&lt;li&gt;データ駆動のテスト(@data_provider)&lt;/li&gt;&lt;li&gt;モックオブジェクトを搭載&lt;/li&gt;&lt;li&gt;CUI &amp;amp; GUIのテストランナープログラム(wxPythonを利用) &lt;/li&gt;&lt;li&gt;pyunitのテストケースも実行可能&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h1&gt;
Wikiの目次
&lt;/h1&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;基本機能&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=usage_jp&amp;amp;referringTitle=Home_jp"&gt;使用法&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Tutorial&amp;amp;referringTitle=Home_jp"&gt;チュートリアル(英語)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Reference_jp&amp;amp;referringTitle=Home_jp"&gt;リファレンス&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;実験的な機能&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Design%20by%20Contract%28%u82f1%u8a9e%29&amp;amp;referringTitle=Home_jp"&gt;Design by Contract(英語)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;その他&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=%u306a%u305cPySpec%u306f%u3053%u3093%u306a%u306b%u30d5%u30a1%u30a4%u30eb%u30b5%u30a4%u30ba%u304c%u5927%u304d%u3044%u306e%uff1f%28%u82f1%u8a9e%29&amp;amp;referringTitle=Home_jp"&gt;なぜPySpecはこんなにファイルサイズが大きいの？(英語)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h1&gt;
サンプルコード
&lt;/h1&gt;&lt;pre&gt;
def add2(input):
  &amp;quot;&amp;quot;&amp;quot;2を足します&amp;quot;&amp;quot;&amp;quot;
  return input + 2
 
class add2_Behavior(object):
  @context
  def Function_add2_whose_input_is_3(self):
    &amp;quot;&amp;quot;&amp;quot;add2関数に3を渡す&amp;quot;&amp;quot;&amp;quot;
    self.result = add2(3)
 
  @spec
  def should_return_5(self):
    &amp;quot;&amp;quot;&amp;quot;返り値は5になる&amp;quot;&amp;quot;&amp;quot;
    About(self.result).should_equal(5)
&lt;/pre&gt; &lt;br /&gt;この仕様を実行すると以下のように出力されます:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
add2関数に3を渡す
  - 返り値は5になる - OK
&lt;/pre&gt;
&lt;/div&gt;</description><author>shibu</author><pubDate>Thu, 21 Feb 2008 22:39:08 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home_jp 20080221103908P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Home&amp;version=13</link><description>&lt;div class="wikidoc"&gt;
&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Home_jp&amp;amp;referringTitle=Home"&gt;Japanese&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;h1&gt;
Project Description
&lt;/h1&gt; &lt;br /&gt;PySpec is the Behavior Driven Development Framework for Python.&lt;br /&gt; &lt;br /&gt;PySpec has following specialty.&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Many kind of verification methods.&lt;/li&gt;&lt;li&gt;More concrete error messages.&lt;/li&gt;&lt;li&gt;Use decorators to define spec.&lt;/li&gt;&lt;li&gt;Data driven test(@data_provider).&lt;/li&gt;&lt;li&gt;Mock Objects included.&lt;/li&gt;&lt;li&gt;CUI &amp;amp; GUI spec runner(wxPython) &lt;/li&gt;&lt;li&gt;Support running pyunit test cases with PySpec's specs&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h1&gt;
Wiki Contents
&lt;/h1&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Fundamental&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Usage&amp;amp;referringTitle=Home"&gt;Usage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Tutorial&amp;amp;referringTitle=Home"&gt;Tutorial&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Reference&amp;amp;referringTitle=Home"&gt;Reference&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Experimental&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Design%20by%20Contract&amp;amp;referringTitle=Home"&gt;Design by Contract&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Other&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Why%20is%20PySpec%20so%20Fat%3f&amp;amp;referringTitle=Home"&gt;Why is PySpec so Fat?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h1&gt;
Sample Code
&lt;/h1&gt;&lt;pre&gt;
def add2(input):
  return input + 2
 
class add2_Behavior(object):
  @context
  def Function_add2_whose_input_is_3(self):
    self.result = add_2(3)
 
  @spec
  def should_return_5(self):
    About(self.result).should_equal(5)
&lt;/pre&gt; &lt;br /&gt;Then, if you run test, you would get the following result:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
Function add2 whose input is 3
  - should return 5 - OK
&lt;/pre&gt; &lt;br /&gt;I am not a native english speaker. Please give me more suitable word than &lt;b&gt;About&lt;/b&gt;.&lt;br /&gt;
&lt;/div&gt;</description><author>shibu</author><pubDate>Thu, 21 Feb 2008 22:29:54 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080221102954P</guid></item><item><title>CREATED RELEASE: PySpec 0.53</title><link>http://www.codeplex.com/pyspec/Release/ProjectReleases.aspx?ReleaseId=10961</link><description>&amp;#33; Version 0.53&lt;br /&gt;&lt;br /&gt;&amp;#42; Support for writing specs of legacy code.&lt;br /&gt;&amp;#42;&amp;#42; &amp;#123;&amp;#123;About&amp;#40;&amp;#41;.should_not_be_changed&amp;#40;&amp;#41;&amp;#125;&amp;#125;&lt;br /&gt;&amp;#42;&amp;#42; &amp;#123;&amp;#123;pyspec.legacy_code.test_proxy&amp;#40;&amp;#41;&amp;#125;&amp;#125;&lt;br /&gt;&lt;br /&gt;These functions helps you to write specs of existing systems that have no tests.&lt;br /&gt;These functions record the objects behavior. Exist program become specs.&lt;br /&gt;&lt;br /&gt;&amp;#42; Support function for finding bugs.&lt;br /&gt;&amp;#42;&amp;#42; dprint&amp;#40;&amp;#41;&lt;br /&gt;&lt;br /&gt;This function is used for finding bugs. It&amp;#39;s args format is similar to print&amp;#40;&amp;#41; of Python3000.&lt;br /&gt;It shows the file name and the expression and the value.</description><author></author><pubDate>Thu, 21 Feb 2008 22:22:58 GMT</pubDate><guid isPermaLink="false">CREATED RELEASE: PySpec 0.53 20080221102258P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Home&amp;version=12</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Behavior Driven Development Framework for Python.&lt;br /&gt;&lt;br /&gt;PySpec has following specialty.&lt;br /&gt;&lt;br /&gt;&amp;#42; Many kind of verification methods.&lt;br /&gt;&amp;#42; More concrete error messages.&lt;br /&gt;&amp;#42; Use decorators to define spec.&lt;br /&gt;&amp;#42; Data driven test&amp;#40;&amp;#64;data_provider&amp;#41;.&lt;br /&gt;&amp;#42; Mock Objects included.&lt;br /&gt;&amp;#42; CUI &amp;#38; GUI spec runner&amp;#40;wxPython&amp;#41;
&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Wiki Contents&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Fundamental&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Usage&amp;amp;referringTitle=Home"&gt;Usage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Tutorial&amp;amp;referringTitle=Home"&gt;Tutorial&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Reference&amp;amp;referringTitle=Home"&gt;Reference&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Experimental&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Design%20by%20Contract&amp;amp;referringTitle=Home"&gt;Design by Contract&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Other&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/pyspec/Wiki/View.aspx?title=Why%20is%20PySpec%20so%20Fat%3f&amp;amp;referringTitle=Home"&gt;Why is PySpec so Fat?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Sample Code&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
def add2(input):
  return input + 2
 
class add2_Behavior(object):
  @context
  def Function_add2_whose_input_is_3(self):
    self.result = add_2(3)
 
  @spec
  def should_return_5(self):
    About(self.result).should_equal(5)
&lt;/pre&gt; &lt;br /&gt;Then, if you run test, you would get the following result:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
Function add2 whose input is 3
  - should return 5 - OK
&lt;/pre&gt; &lt;br /&gt;I am not a native english speaker. Please give me more suitable word than &lt;b&gt;About&lt;/b&gt;.&lt;br /&gt;
&lt;/div&gt;</description><author>shibu</author><pubDate>Thu, 21 Feb 2008 17:13:00 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080221051300P</guid></item></channel></rss>