Python 在FunkLoad中测试向表单发布
我正在尝试使用FunkLoad测试web应用程序的功能 正在测试的页面只是一个登录表单-发送电子邮件和pwd,如果成功,它将重定向到索引页面;如果不成功,它将抛出一个错误 我有以下代码:Python 在FunkLoad中测试向表单发布,python,testing,functional-testing,funkload,Python,Testing,Functional Testing,Funkload,我正在尝试使用FunkLoad测试web应用程序的功能 正在测试的页面只是一个登录表单-发送电子邮件和pwd,如果成功,它将重定向到索引页面;如果不成功,它将抛出一个错误 我有以下代码: self.get(server_url + "/login", description="Get /init/default/login") params=[['email', 'xxxx@gmail.com'], ['password', 'xxxxx'], ['_formna
self.get(server_url + "/login", description="Get /init/default/login")
params=[['email', 'xxxx@gmail.com'],
['password', 'xxxxx'],
['_formname','login'],
]
ret=self.post('%s/login' % server_url,
params=params,
description="Testing login functionality")
self.logd(self.getBody())
无论是有效的电子邮件id/pwd还是错误的,测试都会抛出一个200作为返回码,并保持在同一个登录页面中
如何使用FunkLoad测试表单中的发布
(顺便说一句,当我使用mechanize脚本测试此网页时,我可以登录并路由到正确的索引页)
谢谢按照funkload文档中的说明,设置funkload代理记录器并使用浏览器登录您的站点: 然后你就可以很容易地准确地检查你通过邮寄发送的内容。您可能正在发送您认为的其他参数。在下面的示例中,我正在测试一个使用crsfmiddleware的django登录,它还具有一个重定向到param的功能,以便服务器知道如果登录成功,将重定向到何处。测试并没有真正使用表单,它只是发送浏览器在有人使用表单时会发送的内容。如果您想测试真正的表单功能,最好的方法是使用selenium之类的工具 我必须添加以手动提取crsftoken,因为它随每个请求而变化,并添加一个断言以检查它是否返回到登录页面,但除此之外,此测试就像为我自动生成的记录器:
def test_LoginTest(self):
# The description should be set in the configuration file
server_url = self.server_url
# begin of test ---------------------------------------------
# /tmp/tmpMFahey_funkload/watch0001.request
self.get(server_url + "/",
description="Get /")
# /tmp/tmpMFahey_funkload/watch0002.request
reply = self.get(server_url + "/company/config/dashboard/",
description="Get /company/config/dashboard/")
csrftoken = extract_token(self.getBody(), "name='csrfmiddlewaretoken' value='", "' />")
# /tmp/tmpMFahey_funkload/watch0005.request
self.post(server_url + "/accounts/manager/login/?next=/company/config/dashboard/", params=[
['csrfmiddlewaretoken', csrftoken],
['redirect_to', '/company/config/dashboard/'],
['email', 'user'],
['password', '****']],
description="Post /accounts/manager/login/")
self.assert_("login" not in self.getLastUrl(), "Error in login")
# /tmp/tmpMFahey_funkload/watch0008.request
self.get(server_url + "/accounts/manager/logout/",
description="Get /accounts/manager/logout/")
这适用于以下形式:
<form method="post" action="">
<input type='hidden' name='csrfmiddlewaretoken' value='bb7d67ced4a2c6ee44eba811d44c936d' />
<input type="hidden" name="redirect_to" value="/company/config/dashboard/" id="id_redirect_to" />
<input id="id_email" type="text" class="formtxt fom_size1" name="email" maxlength="100" />
<input id="id_password" type="password" class="formtxt fom_size1" name="password" />
<button class="formbtn" type="submit">Validate</button>
验证
您可以发布完整的表单,看看是否还有其他内容需要添加到post参数中吗?谢谢您提供详细的代码。我给作者发了电子邮件,发现即使是隐藏字段也应该包括在内。它在包含隐藏字段后工作。我还必须更改实际的“csrfmiddlewaretoken”字符串。。。我的是“\r\r\ncsrfmiddlewaretoken”。拿出前面的退货单,效果很好。