码迷,mamicode.com
首页 > 编程语言 > 详细

用python做自动化测试--对服务器端的自动化测试(2)-更多http client实例

时间:2014-07-26 15:13:20      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:自动化测试   python   http协议   session   登陆验证   

上一篇中只是实现了一个很简单的http client功能,request还提供了keep alive, SSL, 多文件上传,cookie 管理功能,http requests头管理等丰富的功能,只要你浏览器实现的功能,requests里面都支持。

#!/usr/bin/env python
#coding=utf-8

import requests

def login_douban(username, passwd):
    post_data={'source':'index_nav','form_email':username,'form_password':passwd}
    request_headers={"User-Agent":"Mozilla/5.0 (Windows NT 6.1; rv:30.0) Gecko/20100101 Firefox/30.0"}
    response=requests.post("http://www.douban.com/accounts/login", data=post_data,headers=request_headers)
    if u"小王子" in response.text:
        print "Login successful"
        return  response
    else:
        print "Login failed"
        print response.text
        return  False

def say_something(login_cookie):
    post_data={'ck':'ynNl','rev_title':u'发福利','rev_text':u'楼主是标题党','rev_submit':u'好了,发言'}
    response=requests.post("http://www.douban.com/group/beijing/new_topic", data=post_data,cookies=login_cookie)
    if response.url=="http://www.douban.com/group/beijing/":
        print "post new content successfully"
        return  True
    else:
        print "Post content fail"
        return  False

login_response=login_douban(your_usename,your_passwd)
say_something(login_response.cookies)

request_headers={"User-Agent":"Mozilla/5.0 (Windows NT 6.1; rv:30.0) Gecko/20100101 Firefox/30.0"}, 这一行的目的是为了模拟这个请求是FireFox发出来的,很多网站为了屏蔽爬虫,会通过User-Agent这个字段来屏蔽,当然现在大型网站应该会用更高级的手段来屏蔽爬虫,如果不设置这个User-Agent, requests发出去的请求,User-Agent的值是python-requests/2.3.0 CPython/2.7.3 Windows/7\r\n。


say_something这个函数没测试了,刚才我频繁的调试,豆瓣要我输入登陆验证码了,有问题这里留言,我过段时间在调试。


关于cookie, session管理这块,如果是在同一个函数里面,request自动管理了session,不需要额外的处理,

session = requests.Session()
session.post("http://www.douban.com/accounts/login", data=post_data,headers=request_headers)
session.post("http://www.douban.com/group/beijing/new_topic", data=post_data)

这样就可以发帖成功。


看到这里大家一定会想到selenium,是不是和requests一样的? requests更擅长于无UI接口测试,selenium更擅长于有UI的web测试。

用python做自动化测试--对服务器端的自动化测试(2)-更多http client实例,布布扣,bubuko.com

用python做自动化测试--对服务器端的自动化测试(2)-更多http client实例

标签:自动化测试   python   http协议   session   登陆验证   

原文地址:http://blog.csdn.net/powerccna/article/details/38141959

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!