过去两天我一直在网上搜索,试图了解我在WebTest上遇到的问题.但是,我没有任何喜悦,并且想知道这里是否有人可以提供帮助.
我正在使用鼻子在我正在开发的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>
Run Code Online (Sandbox Code Playgroud)
我的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()
Run Code Online (Sandbox Code Playgroud)
我运行时得到的响应是提交的值中缺少缩略图,甚至认为表单验证器不需要该字段.当我比较Nose的代码输出和通过shell运行它时,我注意到submit_fields的输出是不同的
壳输出:
[('first_name', ''),('last_name', '')] #First log call
[('first_name', 'test1-1'),('last_name', 'test1-1'), ('thumbnail', '')] #Second log call
Run Code Online (Sandbox Code Playgroud)
鼻子输出:
[(u'first_name', ''), (u'last_name', ''), (u'thumbnail', <File name="thumbnail" id="thumbnail">)] #First log call
[(u'first_name', 'test1-1'), …
Run Code Online (Sandbox Code Playgroud)