当实现实现IDictionary的东西时,我应该对哪些单元进行测试?
测试整个界面似乎有些矫kill过正,但是我知道什么呢?我才进行单元测试几天了...
我想使用条目的主键保存我的文件.
这是我的代码:
def get_nzb_filename(instance, filename):
if not instance.pk:
instance.save() # Does not work.
name_slug = re.sub('[^a-zA-Z0-9]', '-', instance.name).strip('-').lower()
name_slug = re.sub('[-]+', '-', name_slug)
return u'files/%s_%s.nzb' % (instance.pk, name_slug)
class File(models.Model):
nzb = models.FileField(upload_to=get_nzb_filename)
name = models.CharField(max_length=256)
Run Code Online (Sandbox Code Playgroud)
我知道第一次保存对象时主键不可用,所以我愿意采取额外的命中来保存对象只是为了得到主键,然后继续.
上面的代码不起作用.它会引发以下错误:
maximum recursion depth exceeded while calling a Python object
Run Code Online (Sandbox Code Playgroud)
我假设这是一个无限循环.调用该save方法将调用该get_nzb_filename方法,该方法将再次调用该save方法,依此类推.
我正在使用最新版本的Django主干.
如何获取主键以便我可以使用它来保存上传的文件?
更新@muhuk:
我喜欢你的解决方案.你能帮我实现吗?我已将我的代码更新为以下内容,错误是'File' object has no attribute 'create'.也许我正在使用你在上下文中写的东西?
def create_with_pk(self):
instance = self.create()
instance.save()
return instance
def get_nzb_filename(instance, filename):
if not instance.pk:
create_with_pk(instance) …Run Code Online (Sandbox Code Playgroud) 当我sizeof(int)在C#.NET项目中执行时,返回值为4.我将项目类型设置为x64,那为什么它会说4而不是8?这是因为我正在运行托管代码吗?
我想从ASP.NET应用程序查询我的SVN存储库,以列出我的应用程序的前XX个最新版本.
最好的方法是什么?对svn命令行app执行shell执行命令?或者我可以通过https访问它吗?
简单的问题,是否可以在更新一个实体时使用Entity Framework实现此查询?
update test set value = value + 1 where id = 10
Run Code Online (Sandbox Code Playgroud) 在数据库中,我有一个名为Contact的表.第一个名称和其他此类字符串字段旨在使用Char数据类型(而不是我的数据库设计).我的对象Contact映射到属性中的字符串类型.如果我想通过id检索一个Contact对象的简单测试,我会这样做:
Contact contact = db.Contacts.Single(c => c.Id == myId);
Contact test = new Contact();
test.FirstName = "Martin";
Assert.AreEqual(test.FirstName, contact.FirstName);
Run Code Online (Sandbox Code Playgroud)
由于char类型,contact.FirstName值为"Martin".我在哪里可以拦截FirstName属性?OnFirstNameChanging(字符串值)不会在初始加载(联系人)上调用,而是在测试对象上调用.
我正在寻找最好的(可能在大多数PHP 5.2安装和仍然积极开发)的方式来检测PHP中的文件MIME类型.
我知道该mime_content_type()方法和Fileinfo扩展,但是mime_content_type()不可靠和不推荐使用,并且Fileinfo没有进入"标准"PHP(5.2)安装.
我还有其他选择吗?
我的SVG文件的defs部分中有一个linearGradient,并用fill ="url(#myGradientName)"引用它.到目前为止,这很有效.
我想我应该能够将我的整个defs部分放在自己的SVG文件中,然后从我所有的SVG图像中引用它.就是这样的:
styles.svg:
<svg xmlns=...>
<defs>
<linearGradient id="myGradient" ...>
</linearGradient>
</defs>
</svg>
Run Code Online (Sandbox Code Playgroud)
image.svg:
<svg xmlns=...>
<rect width="100" height="100" fill="styles.svg#myGradient"/>
</svg>
Run Code Online (Sandbox Code Playgroud)
但我似乎无法应用这种风格.我对此文件外部的ID(styles.svg#myGradient)有错误的语法吗?我是否需要先以某种方式明确包含该文件?
我一直在倾注SVG规范,看起来这应该是可能的,但实际上没有一个例子显示它已经完成.
编辑:FOP常见问题解答表明正确的语法是fill ="url(grad.svg#PurpleToWhite)",但这在Gecko或Webkit中不起作用.这是正确的,没有人支持它,或者我做错了什么?
我以前写过这个函数,但我似乎无法记住它,它没有进入版本控制.现在,更多与睡眠剥夺相关的事情,我不记得如何重建它.
这是个主意.我有两个表,"regPrice"和"custPrice",共享密钥"itemID".它们都有一个"价格"列,而custPrice也有另一个关键的"acct",这样如果custPrice中存在价格,它应该返回那个价格.如果没有custPrice条目,则应返回regPrice.
伪代码:
if(select custPrice where acct = passedAcct and itemID = passedItemID) {
return custPrice;
else
return regPrice;
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
我有一个通配符模式,可能是"*.txt"或"POS ??.dat".
我还有内存中的文件名列表,我需要与该模式进行比较.
我将如何做到这一点,请记住,我需要与IO.DirectoryInfo.GetFiles(模式)使用完全相同的语义.
编辑:盲目地将其转换为正则表达式将无法正常工作.