Python在HTTP接口测试中的应用

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

HTTP接口例子:http:\\ip:port\interface.php?uname=aaa51Testing软件测试网 ve3SN%@V
接口功能: 根据uname参数值来返回对应的用户名的基本信息
51Testing软件测试网 v?/c&j:h2f[xY vhG
1. 用Python封装被测试接口,对于HTTP接口我们通常会采用 GET和POST 2种调用方式去访问,所以必须把这2种方式都封装进去
# -*- coding:gb2312 -*-
3Rw1y!VL%c'Z&A0import urllib2,urllib
'''
&J]o2y^7w9dd:KdM6W0函数说明:url 特殊字符编码转换
p`S6Bp\O$U0作者:xiaonan51Testing软件测试网;[Kh$^ Y4^1m
输入参数:待转换的字符串数据51Testing软件测试网p B&\`8PyG+Q*q mPA&w
输出参数:转换完成后的字符串数据51Testing软件测试网&kp.|6AQ6F
'''51Testing软件测试网RI"eJH.|
def urlcode(data):51Testing软件测试网prg:f ?6W7W
    return urllib2.quote(str(data))

:e:\4s5H.h7o5rj0'''
4[)o7D0XERg0函数说明:获取用户信息的API接口
Q$H~6Z;`R9rc*c ^)I0作者:xiaonan
_ }$s2Y*aV0输入参数:用户名(uname),HTTP接口调用方式(GET或者POST)
2m l!Ej"F0输出参数:HTTP接口调用返回数据51Testing软件测试网wT edQ(^
'''51Testing软件测试网 XYHuu,X&k}8[
def GetUserInfo(uname,method):51Testing软件测试网 TE-pO5ag7@ b
    if method == 'GET':51Testing软件测试网P8f1b'U%Bt
        url = 'http://ip:port/interface/GetUserInfo.php?uname='+urlcode(uname)
WVk y3Z0        result = urllib2.urlopen(url).read()
n{Uq}~`0        return result
c.?W~!q;A*Q@"q0   51Testing软件测试网.L f+]:\1zi6U*xK
    if method == 'POST':51Testing软件测试网*N'Qd3H2k]
        url = 'http://ip:port/interface/GetUserInfo.php'
"T!t1of L*`$C2?0        values = {'uname' : uname}
vf@*Q1n-tIS0        data = urllib.urlencode(values)51Testing软件测试网t#s#qp3Y
        req = urllib2.Request(url, data)
$^*N'[buY0        response = urllib2.urlopen(req)51Testing软件测试网!a~;gP8I%_|
        result = response.read()51Testing软件测试网o d f?4a7g-Z7R(R
        return result
2. 编写、组织测试脚本, 准备测试数据51Testing软件测试网1Ey3b'dT!L S GG3l
   根据Testcase的具体业务逻辑用事先准备好的测试数据去调用封装好的API接口,验证实际返回结果是否与预期返回结果一致.
   测试数据可以以各种形式存放,如Excel数据表:
qnRx9NS0   TestCaseName    uname     method     Expected Result51Testing软件测试网(K0]FUp
   TestCase1       aaaa      GET        ....51Testing软件测试网.i3OdLBx
   TestCase2       aaaa      POST       ....51Testing软件测试网+Nye[)j3k]k5Q
   TestCase3       bbbb      GET        ....51Testing软件测试网8L2L s)\U\%h]\ k
   ...             ...       ...        ....
# -*- coding:gb2312 -*-
6j%i%P"jX!t1yk9GU0import xlrd51Testing软件测试网 J:T1l&pA$W
'''
函数说明: Testcase 脚本
作者:xiaonan
输入参数:测试数据,API接口
输出参数:测试日志,测试报告
'''
ESb:I6c0def GetUser():
1Z.DI1sQOE I3}0    bk = xlrd.open_workbook(excel文件名称) # 打开excel文件
,L*r0_.qzL YK0    sh = bk.sheet_by_name(excel表名)# 打开excel表51Testing软件测试网?/OI|&fR
    nrows = sh.nrows # 获取总行数51Testing软件测试网+bR6^(nTlz^M
    for i in range(1,nrows):  51Testing软件测试网w J'q(r8x0L5x|%iZ O
        TestCase = sh.cell_value(i,0)51Testing软件测试网$^4D] sH!_piep1]
        uname = sh.cell_value(i,1)51Testing软件测试网 yES T:H
        method = sh.cell_value(i,2)51Testing软件测试网q1} `T3f$g;P
        EX_Result=sh.cell_value(i,3)51Testing软件测试网.G:s5R0iv
        WriterLog('Testcase Name:'+TestCase+'TestData: uname = '+uname+' ,method = '+method+' ,EX_Result = ' + ,EX_Result) # 写测试日志
2L(S-_ W!kf^B0        AC_result = GetUserInfo(uname,method) # 调用API接口
zU8IVZ4C$o0        WriterLog('AC_result = ' + AC_result) # 写测试日志
$g gP6Ti;q0        if EX_Result == AC_result: #实际结果与预期结果对比
kll*j v*k0            WriterLog(...) #写测试日志51Testing软件测试网&L2j_5gg1hA
            WriterReport(...)#写测试报告
} k'[ I};_!p0        else51Testing软件测试网2e `brd~
            WriterLog(...)#写测试日志51Testing软件测试网g%JJT4r5i&@6]a5Rn
            WriterReport(...)#写测试报告

` nyOH1s'w m3x03. 组织测试套,用驱动文件去调用执行所有测试套件,完成相关测试,并生成测试日志及测试报告.51Testing软件测试网6v _~s7X%^H7`q*A
   # -*- coding:gb2312 -*-51Testing软件测试网 R4fX5_S)b N
   ''' 
:U}K'N _e L2~I0   函数说明: Testsuit Driver驱动脚本 
   作者:xiaonan
   输入参数:TestCase 脚本
   输出参数:测试日志,测试报告
51Testing软件测试网sLN Z+st;KT
   '''51Testing软件测试网fb!_ w,~-R#Q{@G
   if __name__ == '__main__':51Testing软件测试网p%H-us%Ar
       ...51Testing软件测试网mm&U(N9^
       WriterLog() #写测试日志51Testing软件测试网Co$QB,aii
       GetUser() # TestCase 脚本51Testing软件测试网o!p~9f y4j} RE;j7Ca"C
       ...
^ b$EUt.~,G8ZO-j0       ...51Testing软件测试网;fP9u`? _u X r
       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

我来说两句

日历

« 2024-03-28  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 95869
  • 日志数: 25
  • 建立时间: 2006-11-24
  • 更新时间: 2012-07-10

RSS订阅

Open Toolbar