Python在HTTP接口测试中的应用

上一篇 / 下一篇  2012-07-10 15:02:09 / 个人分类:Python

HTTP接口例子:http:\\ip:port\interface.php?uname=aaa51Testing软件测试网e+dZ4])u g\g
接口功能: 根据uname参数值来返回对应的用户名的基本信息
51Testing软件测试网h@I*Ee
1. 用Python封装被测试接口,对于HTTP接口我们通常会采用 GET和POST 2种调用方式去访问,所以必须把这2种方式都封装进去
# -*- coding:gb2312 -*-
eq4ez_T R(g0import urllib2,urllib
'''
W(x&ZD tA)?G0函数说明:url 特殊字符编码转换
[9S$S6u7|A0作者:xiaonan51Testing软件测试网#n4VY0kQvh1H-e(b~
输入参数:待转换的字符串数据51Testing软件测试网4q#\"a!xQ`FA
输出参数:转换完成后的字符串数据
:p*N#w2Jc0'''51Testing软件测试网RZ|K)h,X.gC6C(o;_J
def urlcode(data):51Testing软件测试网_}B\u2\n];eFj
    return urllib2.quote(str(data))

6~/X3Jp(_t0'''51Testing软件测试网:lk @1Y L\4EU-j8E
函数说明:获取用户信息的API接口51Testing软件测试网,CYl7e6_ ks
作者:xiaonan
*oF1u0wzO"R-f5n)MDi0输入参数:用户名(uname),HTTP接口调用方式(GET或者POST)51Testing软件测试网3O[[af[`
输出参数:HTTP接口调用返回数据
;qRkv _#Gx0'''51Testing软件测试网x.HM s%L.@OYo
def GetUserInfo(uname,method):
le1~$U K0    if method == 'GET':51Testing软件测试网$[ zVlBe.{m
        url = 'http://ip:port/interface/GetUserInfo.php?uname='+urlcode(uname)51Testing软件测试网 }3_!a4A!]4XB
        result = urllib2.urlopen(url).read()
)j0R] mn n_;]/By!e0        return result51Testing软件测试网4oCk~!CIt|"c
   51Testing软件测试网 p8~8UwvpD lK
    if method == 'POST':51Testing软件测试网t%DCG6_1[5N]zx
        url = 'http://ip:port/interface/GetUserInfo.php'
H*Gh ~0O tTv0        values = {'uname' : uname}
rY"ZnP2N4OR~t0        data = urllib.urlencode(values)
&LA0g.ps,S4L7kg)n}0        req = urllib2.Request(url, data)
7w `m6_k,])BO0        response = urllib2.urlopen(req)51Testing软件测试网c}(LG9v3p4L'~U*fOd.G
        result = response.read()51Testing软件测试网}.nkV C
        return result
2. 编写、组织测试脚本, 准备测试数据
X(U(zl`o7ha0
   根据Testcase的具体业务逻辑用事先准备好的测试数据去调用封装好的API接口,验证实际返回结果是否与预期返回结果一致.
   测试数据可以以各种形式存放,如Excel数据表:
Tq GJ n'FK1ym0   TestCaseName    uname     method     Expected Result
-_ ](E!M OL7\0   TestCase1       aaaa      GET        ....
\ ?8N*wO}0   TestCase2       aaaa      POST       ....51Testing软件测试网9i8Aj f.ej
   TestCase3       bbbb      GET        ....51Testing软件测试网)T|IDo#C;N&pJ
   ...             ...       ...        ....
# -*- coding:gb2312 -*-
\YwYI:`Mir0import xlrd51Testing软件测试网3E$pvk F.c(l't,~9I
'''
函数说明: Testcase 脚本
作者:xiaonan
输入参数:测试数据,API接口
输出参数:测试日志,测试报告
'''
~8GYrA%b,e|0|l1l0def GetUser():
j-w#h`k9Lc&x0    bk = xlrd.open_workbook(excel文件名称) # 打开excel文件
9yh_"^f.GD#u^:yho0    sh = bk.sheet_by_name(excel表名)# 打开excel表51Testing软件测试网(I:sd9M-~HF@ Pr
    nrows = sh.nrows # 获取总行数51Testing软件测试网%D~2].h({ERcF3bE%v
    for i in range(1,nrows):  51Testing软件测试网q)Zf"XY^
        TestCase = sh.cell_value(i,0)51Testing软件测试网[.S6h+I ^4m B
        uname = sh.cell_value(i,1)
W1m:Jr4Bb0        method = sh.cell_value(i,2)
?"X|1rh2] KN0        EX_Result=sh.cell_value(i,3)
/Dy"pZ.@ v G0        WriterLog('Testcase Name:'+TestCase+'TestData: uname = '+uname+' ,method = '+method+' ,EX_Result = ' + ,EX_Result) # 写测试日志
%Q$j;VU+c/hth0        AC_result = GetUserInfo(uname,method) # 调用API接口
*p/u;E q'dGJ0        WriterLog('AC_result = ' + AC_result) # 写测试日志51Testing软件测试网xE [$h ]T
        if EX_Result == AC_result: #实际结果与预期结果对比
A!}_$DwFR:?0            WriterLog(...) #写测试日志51Testing软件测试网-fw3b#zlE%hf~d
            WriterReport(...)#写测试报告51Testing软件测试网7F!i%U$v3E&kk
        else
wu0v[BD'\K-{T0            WriterLog(...)#写测试日志51Testing软件测试网{c0i6rDfM[
            WriterReport(...)#写测试报告

n)j-g,n.k(E03. 组织测试套,用驱动文件去调用执行所有测试套件,完成相关测试,并生成测试日志及测试报告.
o&L u+R^~4L3ij/f0
   # -*- coding:gb2312 -*-51Testing软件测试网+gH~F }B
   ''' 51Testing软件测试网 ?9NJ(^b@5]6zd
   函数说明: Testsuit Driver驱动脚本 
   作者:xiaonan
   输入参数:TestCase 脚本
   输出参数:测试日志,测试报告
51Testing软件测试网)fk6Z(q7Z;t7a _1N\
   '''
.K](yKZ8I?0   if __name__ == '__main__':
!T4A:TYE a&E0       ...51Testing软件测试网W:VSQ9[:s#WX~
       WriterLog() #写测试日志
v:[B\,i0       GetUser() # TestCase 脚本51Testing软件测试网o^n/i2NE#LF'R
       ...51Testing软件测试网.Zfk~ D1A)Dp~7@
       ...51Testing软件测试网6? M+A T1E/| Q0k5@4U
       Report(....) # 统计汇总所有测试报告数据,以文件或页面形式呈现.
4. 执行测试脚本,分析测试结果. 根据测试报告,如果有Bug则提交.

TAG:

jacobsong的个人空间 引用 删除 jacobsong   /   2015-10-14 12:44:37
5
huangxl_huangxl的个人空间 引用 删除 huangxl_huangxl   /   2014-03-25 15:40:19
可惜太粗略了
huangxl_huangxl的个人空间 引用 删除 huangxl_huangxl   /   2014-03-25 15:40:05
3
 

评分:0

我来说两句

Open Toolbar