http接口自动化测试框架实现

发表于:2011-4-25 11:14

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:张元礼    来源:51Testing软件测试网采编

  一、测试需求描述

  对服务后台一系列的http接口功能测试

  输入:根据接口描述构造不同的参数输入值

  输出:XML文件

  eg:http://xxx.com/xxx_product/test/content_book_list.jsp?listid=1

  二、实现方法

  1、选用Python脚本来驱动测试

  2、采用Excel表格管理测试数据,包括用例的管理、测试数据录入、测试结果显示等等,这个需要封装一个Excel的类即可。

  3、调用http接口采用Python封装好的API即可

  4、测试需要的http组装字符转处理即可

  5、设置2个检查点,XML文件中的返回值字段(通过解析XML得到);XML文件的正确性(文件对比)

  6、首次执行测试采用半自动化的方式,即人工检查输出的XML文件是否正确,一旦正确将封存XML文件,为后续回归测试的预期结果,如果发现错误手工修正为预期文件。(注意不是每次测试都人工检查该文件,只首次测试的时候才检查)

  三、Excel表格样式

  四、实现代码(代码才是王道,有注释很容易就能看明白的)

  1、测试框架代码

view plaincopy to clipboardprint?
#****************************************************************  
# TestFrame.py  
# Author     : Vince  
# Version    : 1.1.2  
# Date       : 2011-3-14  
# Description: 自动化测试平台  
#****************************************************************  
 
import os,sys, urllib, httplib, profile, datetime, time  
from xml2dict import XML2Dict  
import win32com.client  
from win32com.client import Dispatch  
import xml.etree.ElementTree as et  
#import MySQLdb  
 
#Excel表格中测试结果底色  
OK_COLOR=0xffffff 
NG_COLOR=0xff 
#NT_COLOR=0xffff  
NT_COLOR=0xC0C0C0 
 
#Excel表格中测试结果汇总显示位置  
TESTTIME=[1, 14]  
TESTRESULT=[2, 14]  
 
#Excel模版设置  
#self.titleindex=3        #Excel中测试用例标题行索引  
#self.casebegin =4        #Excel中测试用例开始行索引  
#self.argbegin   =3       #Excel中参数开始列索引  
#self.argcount  =8        #Excel中支持的参数个数  
class create_excel:  
    def __init__(self, sFile, dtitleindex=3, dcasebegin=4, dargbegin=3, dargcount=8):  
        self.xlApp = win32com.client.Dispatch('et.Application')   #MS:Excel  WPS:et  
        try:  
            self.book = self.xlApp.Workbooks.Open(sFile)  
        except:  
            print_error_info()  
            print "打开文件失败" 
            exit()  
        self.file=sFile  
        self.titleindex=dtitleindex  
        self.casebegin=dcasebegin  
        self.argbegin=dargbegin  
        self.argcount=dargcount  
        self.allresult=[]  
          
        self.retCol=self.argbegin+self.argcount  
        self.xmlCol=self.retCol+1 
        self.resultCol=self.xmlCol+1 
 
    def close(self):  
        #self.book.Close(SaveChanges=0)  
        self.book.Save()  
        self.book.Close()  
        #self.xlApp.Quit()  
        del self.xlApp  
          
    def read_data(self, iSheet, iRow, iCol):  
        try:  
            sht = self.book.Worksheets(iSheet)  
            sValue=str(sht.Cells(iRow, iCol).Value)  
        except:  
            self.close()  
            print('读取数据失败')  
            exit()  
        #去除'.0'  
        if sValue[-2:]=='.0':  
            sValue = sValue[0:-2]  
        return sValue  
 
    def write_data(self, iSheet, iRow, iCol, sData, color=OK_COLOR):  
        try:  
            sht = self.book.Worksheets(iSheet)  
            sht.Cells(iRow, iCol).Value = sData.decode("utf-8")  
            sht.Cells(iRow, iCol).Interior.Color=color  
            self.book.Save()  
        except:  
            self.close()  
            print('写入数据失败')  
            exit()  
      
    #获取用例个数      
    def get_ncase(self, iSheet):  
        try:  
            return self.get_nrows(iSheet)-self.casebegin+1 
        except:  
            self.close()  
            print('获取Case个数失败')  
            exit()  
      
    def get_nrows(self, iSheet):  
        try:  
            sht = self.book.Worksheets(iSheet)  
            return sht.UsedRange.Rows.Count  
        except:  
            self.close()  
            print('获取nrows失败')  
            exit()   

41/41234>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • frankwangzy1103
    2011-4-26 17:06:24

    为什么要种excel这种不标准的东西吗?

  • sudawei686
    2011-4-25 17:23:50

    good 拿去研究。

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号