我遇到了使用请求库为登录功能编写验收测试的问题。登录是使用post方法实现的,我无法直接更改查询字符串并操作url。我想要做的是手动提交发布数据,并将页面重定向到它将经常访问的页面,如果用户成功登录。我想检索该页面的html并检查登录成功,我会这样做吗?使用请求库进行验收测试(python)
此方法将失败:
data={'email': '[email protected]', 'password': 'example'}
login_url="examplepage.com/signin"
request_data = requests.post(login_url, data, allow_redirects=True)
print request_data.content
这是resp.headers回报:
{'content-length': '1124', 'date': 'Sun, 14 Apr 2013 16:12:51 GMT', 'set-cookie': 'session="+udnwfCkuAuFGp9QKOiU1YS2X1s=?_fresh=STAwCi4=&_id=Uyc3XHhkZVx4Y2J3T1x4YjBceDkxeFx4MWNceGFhXHhkNFx4OTMhKVx4MGJyJwpwMQou&csrf=Uyc2Mzk0YjVjZjMzMGZkMTNkY2NiM2EzZTZkYzgyMjhkY2IwOWQ2NmM3JwpwMQou"; Path=/; HttpOnly', 'content-type': 'text/html; charset=utf-8', 'connection': 'keep-alive', 'server': 'Werkzeug/0.8.3 Python/2.7.3'}
resp.content刚刚返回符号的HTML页面:
<title>Web App</title>
</head>
<body>
<div>Web App: <a href="/home">Home</a>
| <a href="/signin">Login</a>
| <a href="/register">Register</a>
</div>
<hr>
<h1>Sign in</h1>
<form action="" method=post name="signin">
<div style="display:none;"><input id="csrf_token" name="csrf_token" type="hidden" value="20130414164251##fd7e82d47974518d098b41cecf2a4452f890317f"></div>
<dl>
<dt><label for="email">Email Address</label>
<dd><input id="email" name="email" type="text" value="[email protected]">
</dd>
<dt><label for="password">Password</label>
<dd><input id="password" name="password" type="password" value="">
</dd>
</dl>
<p><input type="submit" value="Sign in">
</form>
<a href="/login"> Click here to sign in using your Google, Yahoo, AOL, Flickr, or another OpenID account. </a>
</body>
</html>
它是如何,它失败了呢?什么从打印命令回来? – bbayles 2013-04-10 03:17:22
这不是重定向,它只会返回页面html中的符号。 – Mike 2013-04-10 14:56:09