我是一名通过TDD工作的C++程序员.我现在正在学习python 3并希望继续使用TDD.在C++中,我为所有类提供了一个接口并创建了它们的模拟版本.然后我在代码中传递指向这些接口的指针.
我想知道我应该使用哪些库来有效地在python中使用tdd.内置的python和我需要的额外功能.我发现了这个,看起来非常有趣:
http://www.voidspace.org.uk/python/mock/
任何值得检查的替代方案?
任何在线资源,在线教程或值得检查的书籍?
谢谢!
我开始编写我的项目代码,在过去未完成的项目中,我使用了两种不同的模式来管理需要管理以下内容的用户类的设计:
尽管如此,我们还要考虑这个用户类将由会话类扩展,该会话类只将焦点用户ID设置为查看页面的用户提供的id.
我们还将使用此类users来管理用户组.
我使用的两个选项如下(简化):
不同类别用于不同目的
- class UserMaker($username, $password, $email);
function giveBirth(); // create the user
- class UserManager($id);
function edit($field, $value); // edit a specific user field
function save(); // save all the edits with a single query
function setTrusted(); // set that user as trusted
function setAdmin(); // set that user as admin
function setBanned(); // ban the specific user
- class UserReader($id);
function get($field); // Get the value of a single …Run Code Online (Sandbox Code Playgroud) 通常,我们可以创建这样的属性,
dynamic expando = new ExpandoObject();
expando.Price = 45k;
expando.Value = "Good";
Run Code Online (Sandbox Code Playgroud)
在我的情况下,直到运行时我才会知道诸如"价格"或"价值"之类的属性.如何,我可以创建这样的动态属性.就像是,
dynamic expando = new ExpandoObject();
expando[properties[0]] = 45k;
expando[properties[1]] = "Good";
expando[properties[2]] = "Red";
expando[properties[3]] = 8;
Run Code Online (Sandbox Code Playgroud)
无论如何要实现这种行为.
对于一个小游戏(我有点被迫使用C++,所以基于STL的解决方案在这里很有趣),我遇到了下面的问题.我想知道是否有关于这个主题的文献我可以阅读,或者是巧妙的实施.
唯一项目{E1,E2,E3}的集合S,每个项目E具有一组属性,{P1,P2,P3 ...}
该集合应该在S1,S2,S3,S4中分开.它定义了S1..4必须具有多大的精确度.我们可以假设集合可以正确地分成这些大小以解决问题的其余部分.
现在,对于S1,可以出现许多约束,{C1,C2 ..},它们指定例如,没有具有属性P1的项目可能出现在其中.另一个约束可能是它应该支持具有属性P2的因子为0.8的项(我们可以假设这些类型的约束针对每个属性的所有子集进行了规范化).
"加权"并不难实现.我只是用一些候选数字填充一些数组,权重较高的数组在这个数组中表示得更多.然后我选择数组的随机元素.数组的大小决定了准确性/粒度(在我的例子中,一个小数组就足够了).
问题是禁止出现一些项目.它很容易导致S中的一个项目需要放置在子集S1,S2,S3或S4中的一个中的情况,但是由于子集全部已满或者不满足,因此不再发生这种情况.完全具有此项无法出现在集中的特定约束.所以你必须回溯展示位置.过于频繁地这样做可能会过多地违反加权概率.
如何调用此问题,或者它是否容易映射到另一个(可能是NP)问题?
编辑:示例:
S = {A,B,C,D,E,F,G,H,I,J,K,L,M}
S1 = [0.8有VOWEL的概率,不能有I或K,SIZE = 6]
S2 = [0.2有VOWEL的概率,不能有M,B,E,SIZE = 7]
现在,假设我们开始填写FOR(LETTER IN S):
字母A,根据属性约束(0.8 vs 0.2)创建填充数组:
[ 1,1,1,1,1,1,1,2,2 ].
从该数组中选择一个随机元素:1.
现在,把A放在S1中.
例如,对于字母I,唯一的候选者将是2,因为S1具有我不能出现在其中的约束.
继续这样做,最终你可能会得到:
C = {M} //再分发一封信
S1 = A,B,D,E,F,G
S2 = C,F,G,I,K,L
现在,在哪里放置M?我不能被放置在S1中,因为那个已满,并且它不能放在S2中,因为它有一个约束,M不能放在其中.
唯一的方法是回溯一些位置,但是我们可能会过多地加重加权分布(fi,给S2一个S1的元音,它绕着自然分布翻转)
请注意,当更多子集在播放时,这会变得稍微复杂一些(在某种意义上需要更多的回溯),而不是仅仅2.
我有一些与envers相关的天真问题.我们可以将审计表命名为默认值以外的其他值,即TableName_AUD和ya,而不仅仅是前缀或后缀,全名.
<% unless params[:date_from].blank? %>
<input type="hidden" name="date_from" value="<%= params[:date_from] %>"/>
<% end %>
<% unless params[:date_to].blank? %>
<input type="hidden" name="date_to" value="<%= params[:date_to] %>"/>
<% end %>
<% unless params[:from_hh].blank? %>
<input type="hidden" name="from_hh" value="<%= params[:from_hh] %>"/>
<% end %>
<% unless params[:from_mm].blank? %>
<input type="hidden" name="from_mm" value="<%= params[:from_mm] %>"/>
<% end %>
<% unless params[:from_ampm].blank? %>
<input type="hidden" name="from_ampm" value="<%= params[:from_ampm] %>"/>
<% end %>
<% unless params[:to_hh].blank? %>
<input type="hidden" name="to_hh" value="<%= params[:to_hh] %>"/>
<% end %>
<% unless …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下方法获取电子邮件正文的特定部分:
$message = imap_fetchbody ($imap_stream,$n,1);
Run Code Online (Sandbox Code Playgroud)
这适用于使用Outlook,Hotmail,Yahoo等发送的电子邮件.但是当我尝试获取从Blackberry或Andriod设备发送的电子邮件的正文时,邮件被编码和加扰,例如:
xmb250IHN0eWxlPSdjb2xvcjojRjk3MWIxMDNiMTEyYjExOGI0N2I1MWI1
Run Code Online (Sandbox Code Playgroud)
虽然正文是编码的,但标题很好.如何解码从Android或Blackberry设备发送的电子邮件的邮件正文?
谢谢,
克里斯.
我想从字符串中替换所有空格,但我需要保留新的行字符吗?
choiceText=choiceText.replace(/\s/g,'');
india
aus //both are in differnt line
Run Code Online (Sandbox Code Playgroud)
正在给予 indaus
我想换行应该保留并删除s
我在一个PHP站点上与一个合作伙伴一起为客户工作.我们有一个共同的Mercurial存储库(在Bitbucket上),包括本地副本和实时站点.我们只有FTP访问实时站点(由于它只是一个FTP主机包,因此无法更改).
我希望能够将更改从存储库推送到实时站点.
到目前为止,我只是跟踪repo中已更改的文件,并使用FileZilla手动复制它们 - 这是一个容易出错且烦人的任务.我的想法是,在本地安装远程位置(即使用CurlFtpFS)并告诉mercurial自动将更改的文件复制到站点.理想情况下,我希望能够指定哪些更改,但这将是一个奖励.如果同步中的文件的本地状态是同步的就足够了.
有没有什么好方法可以使用linux命令行工具?
我需要跳过匹配谓词的第一个元素作为linq查询.至于我能告诉我能做的最好的事情是这样的:
var list = new [] {1,2,3,4,5,6,7,8,9};
var skippedFirstOdd = false;
var skipFirstEvenNumber = list.SkipWhile(number =>
{
if(number % 2 != 0)
{
skippedFirst = true;
return true;
}
else
{
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
哪个有效(我认为),但不是很优雅.有没有更清洁的方法来实现这一目标?