我目前有一个看起来像的unittest.TestCase ..
class test_appletrailer(unittest.TestCase):
def setup(self):
self.all_trailers = Trailers(res = "720", verbose = True)
def test_has_trailers(self):
self.failUnless(len(self.all_trailers) > 1)
# ..more tests..
Run Code Online (Sandbox Code Playgroud)
这工作正常,但Trailers()调用大约需要2秒才能运行..鉴于setUp()在每次测试运行之前调用,测试现在需要大约10秒才能运行(只有3个测试函数)
self.all_trailers在测试之间缓存变量的正确方法是什么?
删除setUp函数,并执行..
class test_appletrailer(unittest.TestCase):
all_trailers = Trailers(res = "720", verbose = True)
Run Code Online (Sandbox Code Playgroud)
..works,但它声称"在0.000s中进行3次测试"这是不正确的..我能想到的另一种方法是拥有一个cache_trailers全局变量(它工作正常,但相当可怕):
cache_trailers = None
class test_appletrailer(unittest.TestCase):
def setUp(self):
global cache_trailers
if cache_trailers is None:
cache_trailers = self.all_trailers = all_trailers = Trailers(res = "720", verbose = True)
else:
self.all_trailers = cache_trailers
Run Code Online (Sandbox Code Playgroud) 是否有一个现有的插件可以使用如下:
@nose.plugins.expectedfailure
def not_done_yet():
a = Thingamajig().fancynewthing()
assert a == "example"
Run Code Online (Sandbox Code Playgroud)
如果测试失败,它将显示为跳过的测试:
$ nosetests
...S..
Run Code Online (Sandbox Code Playgroud)
..但如果它意外通过,它会出现类似于失败,可能像:
=================================
UNEXPECTED PASS: not_done_yet
---------------------------------
-- >> begin captured stdout << --
Things and etc
...
Run Code Online (Sandbox Code Playgroud)
有点像SkipTest,但没有实现为阻止测试运行的异常.
我唯一能找到的是这张关于支持unittest2expectedFailure装饰器的票(虽然我不想使用unittest2,即使是鼻支持它)
优秀UI设计师的特点是什么?如今,与交互设计能力相比,人们必须具备多少图形设计能力.随着WPF和Silverlight的出现,我认为这一点越来越重要.
我个人认为自己擅长交互设计,但想加强我在图形设计领域的技能.是否有可能学习这些技能,或者你是否与他们一起出生?任何人都可以推荐任何有用的好书或资源吗?
谢谢,
克雷格
使用时复制大文件时shutil.copy(),不会指示操作是如何进行的.
我把一些有用的东西放在一起 - 它使用一个简单的ProgressBar类(简单的返回一个简单的ASCII进度条,作为一个字符串),以及一个循环open().read()和.write()进行实际的复制.它显示使用的进度条sys.stdout.write("\r%s\r" % (the_progress_bar))有点hackish,但它的工作原理.
是否有更好的内置模块?是否可以对此代码进行任何改进?
是否有一个buildbot插件将轮询git存储库以进行新的提交,比如当前包含的changes.SVNPoller?
我找到的最接近的是git_buildbot.py,但是它作为一个后提交钩子,所以不能用我的设置(使用Github,并且在github的post-commit无法访问的机器上使用buildbot) - 只需轮询git存储库会完美的.
我目前每小时进行一次构建运行,但除非发生变化,否则运行测试并没有任何意义.
使用PyObjC,是否可以导入Python模块,调用函数并获得结果(例如)NSString?
例如,执行以下Python代码的等效操作:
import mymodule
result = mymodule.mymethod()
Run Code Online (Sandbox Code Playgroud)
..in伪ObjC:
PyModule *mypymod = [PyImport module:@"mymodule"];
NSString *result = [[mypymod getattr:"mymethod"] call:@"mymethod"];
Run Code Online (Sandbox Code Playgroud) 我只是想让某人验证以下问题是NP完全还是实际上有一个比简单的强力组合检查更好/更容易的解决方案.
我们的软件中存在一种资源分配问题,我将用一个例子来解释它.
假设我们需要4个人在白班工作.这个数字以及它是"白班"的事实记录在我们的数据库中.
但是,我们并不需要任何人填写这些地点,需要填写一些要求才能满足要求.
在这4个中,让我们说其中2个必须是护士,其中1个必须是医生.
其中一名医生也必须作为特定团队的一员工作.
所以我们有这套信息:
白班:4名
1名医生
1名医生,需要在A组
1名护士工作
以上不是问题.当我们开始挑选人们白天工作并试图弄清楚到目前为止我们选择的人是否能够真正满足标准时,问题就出现了.
例如,假设我们选择James,John,Ursula和Mary来工作,其中James和Ursula是医生,John和Mary是护士.
厄秀拉也在A队工作.
现在,根据我们试图适应账单的顺序,我们最终可能会推断出我们是否拥有合适的人,除非我们开始尝试不同的组合.
例如,如果在列表中首先选择Ursula,我们可以将她与"1医生"标准相匹配.然后我们到了詹姆斯,我们注意到,由于他不在A队工作,所以关于"1位医生,需要在A队工作"的其他标准,不能用他来填补.由于其他两个人都是护士,他们也不符合这个标准.
因此,我们首先回溯并尝试詹姆斯,他也可以符合第一个标准,然后厄秀拉可以满足需要该团队的标准.
所以问题在我们看来,因为我们需要尝试不同的组合,直到我们要么全部尝试,在这种情况下我们有一些尚未填充的标准,即使工作头的总数与总数相同需要的头数,或者我们发现了一个有效的组合.
这是唯一的解决方案,任何人都可以想到更好的解决方案吗?
编辑:一些澄清.
对这个问题的评论提到,对于这几个人,我们应该蛮力,我同意,这可能是我们可以做的,我们甚至可以做到这一点,在某些优化看待大小的同一条道路上如果数据量很小,数据并选择不同的排序算法,初始开销较小.
但问题在于,这是一个名册规划系统的一部分,你可能会涉及很多人,"我们在白天需要X人"以及"我们有这个Y人群"这将是",以及一个大的潜力"我们有这个X人的Z标准列表,将不得不以某种方式与这些Y人匹配",然后你补充说我们将有在领导者调整名单的同时,实时进行相同计算的天数,然后需要快速解决方案.
基本上,领导者会在屏幕上看到一个实时信息,说明有多少人仍在失踪,无论是在整个日班,还是有多少人符合各种标准,以及我们实际有多少人除了我们拥有的那些之外.这个显示器必须更新半实时,而领导者调整名单时"如果詹姆斯采取白天而不是厄秀拉,而厄秀拉需要夜班".
但是非常感谢到目前为止已经回答过这个问题的人,约束满足问题听起来像我们需要的方式,但我们肯定会在这里仔细查看所有的链接和算法名称.
这就是为什么我喜欢StackOverflow :)
我的网站几乎没有全局配置.例如"smtp-server address","公司地址"等.
当然,我可以:
settings.py并在模板和应用程序中使用它;Configuration)并在那里写下所有需要的字段.如果我使用第一种方式,我无法在django-admin中更改此字段.
如果我使用秒方式它不是一个漂亮的解决方案,因为我将使用代码中的任何地方model_name.objects.get(id=1),我只需要一个实例.模型是为另一个任务创建的.
我怎么解决这个问题?
我想在第三方库(xmltree-rs)中调用此函数:
pub fn parse<R: Read>(r: R) -> Element {
Run Code Online (Sandbox Code Playgroud)
预期的用例是给它一个文件,如下:
let e: Element = Element::parse(File::open("tests/data/01.xml").unwrap());
Run Code Online (Sandbox Code Playgroud)
但是我有一个String我想通过的,模糊地这样:
xmltree::Element::parse("<example>blah</example>".to_owned());
Run Code Online (Sandbox Code Playgroud)
但是,这当然会出错:
error: the trait `std::io::Read` is not implemented for the type `collections::string::String` [E0277]
Run Code Online (Sandbox Code Playgroud)
如果没有写临时文件,我该怎么做?(例如在Python中我会使用StringIO模块将字符串包装在类似文件的对象中)
python ×5
file-io ×2
algorithm ×1
allocation ×1
buildbot ×1
django ×1
django-admin ×1
git ×1
java ×1
nose ×1
np-complete ×1
objective-c ×1
openid ×1
pyobjc ×1
rust ×1
silverlight ×1
testing ×1
unit-testing ×1
wpf ×1