系统整合测试就是评估产品在其规格范围内的环境下工作,能否完成产品设计规格所需要的功能及与周边设备、应用软件的兼容性。大致可以分为硬、软件兼容性测试,认证测试。安装Win/Linux/Unix这些只是系统整合测试的一小部分硬件测试:所有产品的周边设备,例如CPU、DIMM、storage、NIC、USB等软件测试:操作系统的安装,驱动的安装,以及配套应用软件的安装及使用等认证测试:Windows、Red Hat、VMWare等。
1.直接执行Python脚本代码引用 org.python包
1 PythonInterpreter interpreter = new PythonInterpreter()
2 interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun')")///执行python脚本
2. 执行python .py文件
1 PythonInterpreter interpreter = new PythonInterpreter()
2 InputStream filepy = new FileInputStream("D:\\demo.py")
3 interpreter.execfile(filepy)///执行python py文件
4 filepy.close()
3. 使用Runtime.getRuntime()执行脚本文件
这种方式和.net下面调用cmd执行命令的方式类似。如果执行的python脚本有引用第三方包的,建议使用此种方式。使用上面两种方式会报错java ImportError: No module named arcpy。
1 Process proc = Runtime.getRuntime().exec("python D:\\demo.py")
2 proc.waitFor()
对于各种驱动接口,Python来编写测试用例的好处是:由于Python不需要编译,你所执行的也就是你所编写的,当发生异常的时候,你无须打开集成开发环境,加载测试工程、并调试,你能够很方便的看到python测试脚本的内容,什么地方出了异常可以立刻发现,例如:from ctypes import *
rc =c_int(-12345)
dll = windll.LoadLibrary("dmodbc.dll")#加载被测试组件
#=================#
SQLHANDLE_env = pointer(c_long(0))
SQLHANDLE_cnn = pointer(c_long(0))
SQLHANDLE_stmt = pointer(c_long(0))
pdns = c_char_p("FASTDB")
puid = c_char_p("SYSDBA")
ppwd = c_char_p("SYSDBA")
#env handle
rc = dll.SQLAllocHandle(1,None,byref(SQLHANDLE_env))
print "result of henv handle alloc :%d" %rc
#cnn handle
rc = dll.SQLAllocHandle(2,SQLHANDLE_env,byref(SQLHANDLE_cnn))
print "result of cnn handle alloc :%d" %rc
#connect!
rc = dll.SQLConnect(SQLHANDLE_cnn,pdns,-3,puid,-3,ppwd,-3)
print "result of connect :%d" %rc
#stmt handle
rc = dll.SQLAllocHandle(3,SQLHANDLE_cnn,byref(SQLHANDLE_stmt))
print "result of stmt handle alloc:%d" %rc
#exec
rc = dll.SQLExecDirect(SQLHANDLE_stmt,"insert into t values(1)",-3)
print "result of exec:%d" %rc
#free========================
rc = dll.SQLFreeHandle(3, SQLHANDLE_stmt)
print rc
rc = dll.SQLDisconnect(SQLHANDLE_cnn)
print rc
rc = dll.SQLFreeHandle(2, SQLHANDLE_cnn)
print rc
rc = dll.SQLFreeHandle(1, SQLHANDLE_env)
print rc
在上面我们可以看到,Python调用c/c++接口是十分容易的,只需要把动态库加载进来,然后把这个动态库当作一个对象实例来使用就可以了。下面将是一个使用ado.net接口的例子:
import System
from Dm import *#Dm是DMDBMS提供的ado.Net的DataProvider
#print dir(Dm.DmCommand)
i =0
cnn = Dm.DmConnection("server = 127.0.0.1User ID = SYSDBAPWD = SYSDBADatabase = SYSTEMport = 12345")
cmd = Dm.DmCommand()
cmd.Connection = cnn
cmd.CommandText = "insert into t values(1)"
cnn.Open()
i=cmd.ExecuteNonQuery()
print i
cmd.Dispose()
cnn.Close()
可以看到,.net对象的使用与在VisualStdio上进行开发几乎没有任何区别。
通过使用Python进行测试用例的开发,最大的好处莫过于:学习成本非常低,测试工程师只需要学习Python,对于其他语言稍有了解就可以了。同时只需要少量的测试开发工程师对Python测试框架进行维护。
这样的好处就是便于测试人员将精力专精在一个方向,免于“什么都会一点,但什么都不精”的情况。当然测试人员具备广阔的知识面,会使用各种常见的开发工具与平台是好事情,并且也是必要的,不过在短时间内要求迅速能够胜任大多数任务也是企业在人才培养上的期望目标。