nosetests和文件上传问题

时间:2012-10-15 08:42:10

标签: python file-upload pylons nose webtest

过去两天我一直在网上搜索,试图了解我在WebTest上遇到的问题。但是,我没有感到高兴,并且想知道这里是否有人可以提供帮助。

我正在使用nose在我正在开发的Web应用程序上运行测试,但似乎在其中包含文件上载字段的表单存在问题。当表单运行正常时,表单和验证在服务器上运行,如果我从shell运行测试代码,它也可以运行。但是,每当我从鼻子运行测试代码时,它都无法接受提交的信息。

以下是表单的示例:

<form method="POST" enctype="multipart/form-data" action="....">
    <input type="text" name="first_name" id="first_name">
    <input type="text" name="last_name" id="last_name">
    <input type="file" name="thumbnail" id="thumbnail">
    <input type="submit" value="Create" name="submit" id="submit">
</form>

我的WebTest代码如下所示:

response = self.app.get( url(controller=self.controller, action='create') )
form = response.form                                                       

log.debug( form.submit_fields() )                                          

form.set('first_name', 'test1-1')                                          
form.set('last_name', 'test1-1')                                            
form.set('thumbnail', '')                                                 

log.debug( form.submit_fields() )                                          
response = form.submit()

我运行时得到的响应是提交的值中缺少缩略图,即使表单验证器不需要该字段。当我比较Nose的代码输出和通过shell运行时我注意到submit_fields的输出是不同的

Shell输出:

[('first_name', ''),('last_name', '')] #First log call
[('first_name', 'test1-1'),('last_name', 'test1-1'), ('thumbnail', '')] #Second log call

鼻子输出:

[(u'first_name', ''), (u'last_name', ''), (u'thumbnail', <File name="thumbnail" id="thumbnail">)] #First log call
[(u'first_name', 'test1-1'), (u'last_name', 'test1-1'),(u'thumbnail', <File name="thumbnail" id="thumbnail">)] #Second log call

正如你所看到的那样,shell中没有缩略图元组,但是将它设置为一个没有问题的空字符串。但是,在Nose中,已经有一个元组,它不会重置值。谁能帮我这个?使用form.submit方法时,在WebTest中尝试多部分表单是否有问题?

提前感谢您的帮助。

图书馆信息: 塔-1.0.1 WebTest的-1.4.0 的WebOb-1.2.3 鼻1.2.1

1 个答案:

答案 0 :(得分:1)

您是否尝试删除log.debug( form.submit_fields() )中的log.debug?

有时候人们已经知道Nose会与日志记录进行奇怪的交互,因为它会对输出进行一些内部重定向。