Python在HTTP接口测试中的应用

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

HTTP接口例子:http:\\ip:port\interface.php?uname=aaa51Testing软件测试网 v.YT(DDVy;j+? j6I
接口功能: 根据uname参数值来返回对应的用户名的基本信息

A I&S.[1E01. 用Python封装被测试接口,对于HTTP接口我们通常会采用 GET和POST 2种调用方式去访问,所以必须把这2种方式都封装进去
# -*- coding:gb2312 -*-
5Ow.M Se0import urllib2,urllib
'''51Testing软件测试网H&cyt[n$S!P)mL
函数说明:url 特殊字符编码转换
t2Q yJ4yX!c/p/^(R0作者:xiaonan51Testing软件测试网3KS G T.CV
输入参数:待转换的字符串数据
#yJNL0F|x!x*zp/V0输出参数:转换完成后的字符串数据51Testing软件测试网m;\|8@&oL
'''
G!q gaM'Gx D(`:`;^n^o0def urlcode(data):
|?V~o*{/l8B0    return urllib2.quote(str(data))

5O Bv1\D%\0'''
Mo0I1~T0函数说明:获取用户信息的API接口
z7b;x+W~0作者:xiaonan51Testing软件测试网~ w7b1v}
输入参数:用户名(uname),HTTP接口调用方式(GET或者POST)51Testing软件测试网.W9WpQ#]|
输出参数:HTTP接口调用返回数据51Testing软件测试网.tu$]#f;iO
'''51Testing软件测试网-O?pQ;p(p^+o
def GetUserInfo(uname,method):51Testing软件测试网+n6F"Z h3x0uS"a
    if method == 'GET':
%HUE9Zb0        url = 'http://ip:port/interface/GetUserInfo.php?uname='+urlcode(uname)
H3d,Q `j%Z\0        result = urllib2.urlopen(url).read()51Testing软件测试网S:R#u$V;A
        return result51Testing软件测试网F[,V2\|
   
g!fd3B.n6w [/c0    if method == 'POST':
fdL aM#S/f0        url = 'http://ip:port/interface/GetUserInfo.php'
!b-ZY;PO~} ]0        values = {'uname' : uname}
8N9bS;w x4E+fg!feB0        data = urllib.urlencode(values)
2I"V'|q8?0        req = urllib2.Request(url, data)51Testing软件测试网A9rSx@,CR.C
        response = urllib2.urlopen(req)51Testing软件测试网? NA KP/FI]
        result = response.read()51Testing软件测试网j:c6I"q K_)@
        return result
2. 编写、组织测试脚本, 准备测试数据
2w$exB,aF9D$a0
   根据Testcase的具体业务逻辑用事先准备好的测试数据去调用封装好的API接口,验证实际返回结果是否与预期返回结果一致.
   测试数据可以以各种形式存放,如Excel数据表:
| ~ Yy4_H0   TestCaseName    uname     method     Expected Result
l n*rW/S)?0_RS0   TestCase1       aaaa      GET        ....51Testing软件测试网8N P:@ YT T
   TestCase2       aaaa      POST       ....51Testing软件测试网 @7J+q@w7j;V/M
   TestCase3       bbbb      GET        ....51Testing软件测试网+|K J^-\bJ4[kl
   ...             ...       ...        ....
# -*- coding:gb2312 -*-
$euwJA Uz&Nm"N E0import xlrd
d}*V+n],IL$|0'''
函数说明: Testcase 脚本
作者:xiaonan
输入参数:测试数据,API接口
输出参数:测试日志,测试报告
'''51Testing软件测试网 e}9DEa~` l
def GetUser():51Testing软件测试网Z3wS?(dVX
    bk = xlrd.open_workbook(excel文件名称) # 打开excel文件
e.Y5O$Z ~ s0    sh = bk.sheet_by_name(excel表名)# 打开excel表51Testing软件测试网9V*Bjy0dPQ
    nrows = sh.nrows # 获取总行数51Testing软件测试网a l%tm$jx3aTF
    for i in range(1,nrows):  51Testing软件测试网:\o4hG^BkTD`/|!G
        TestCase = sh.cell_value(i,0)
6f!H$Ni5g~C0        uname = sh.cell_value(i,1)
D&Ig%A*M*P;?0        method = sh.cell_value(i,2)51Testing软件测试网N0Np%i#t
        EX_Result=sh.cell_value(i,3)51Testing软件测试网 N,t.V9X2^Y2Wq
        WriterLog('Testcase Name:'+TestCase+'TestData: uname = '+uname+' ,method = '+method+' ,EX_Result = ' + ,EX_Result) # 写测试日志51Testing软件测试网&a#~c-^TL2djR
        AC_result = GetUserInfo(uname,method) # 调用API接口
3A [zT a0        WriterLog('AC_result = ' + AC_result) # 写测试日志
h/QIQ2r j3v5zC0        if EX_Result == AC_result: #实际结果与预期结果对比
xlq/Ekj9@3X0            WriterLog(...) #写测试日志
GFJ%z z?"?|0            WriterReport(...)#写测试报告
g h,q#|\b:b(C@0        else51Testing软件测试网0fQ1c4[ E Hn,s
            WriterLog(...)#写测试日志51Testing软件测试网~k5Sx F+^w!p
            WriterReport(...)#写测试报告
51Testing软件测试网v.K6P/KP;A'R,X
3. 组织测试套,用驱动文件去调用执行所有测试套件,完成相关测试,并生成测试日志及测试报告.
Ya;Zc&Qb.v0
   # -*- coding:gb2312 -*-51Testing软件测试网&rc y(A"f@'`6s*Uf*{
   ''' 51Testing软件测试网W0Jr)?#F~:dD
   函数说明: Testsuit Driver驱动脚本 
   作者:xiaonan
   输入参数:TestCase 脚本
   输出参数:测试日志,测试报告

]|z-tV#sYw w8T0   '''
^e$fq,? U8o0   if __name__ == '__main__':51Testing软件测试网 \][0mji.\!G
       ...
;b3igdUX0       WriterLog() #写测试日志
l8l1v8qOc+W'F0I0       GetUser() # TestCase 脚本
[$r~~2Y0       ...
u WGr9x0       ...51Testing软件测试网2U;g} Xgo?o*w
       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

我来说两句

日历

« 2022-01-18  
      1
2345678
9101112131415
16171819202122
23242526272829
3031     

数据统计

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

RSS订阅

Open Toolbar