发布时间:2022-05-12 09:52:13 人气:30 作者:多测师
Python语言是一种面向对象的用途十分普遍的编程言语,具有十分明晰的语法特性,适用于多种操作系统,可以在Windows和Unix这样的系统中运转。现在在国际上十分盛行,正在得到越来越多的使用。Python可以完成许多职务,功用十分强悍。
关于咱们的测试任务而言,Python最吸引咱们的特征有如下多个方面:
1 具有言语粘合剂的才干
2 解释执行的机制
3 语法容易易学
4 相对较高的功用
言语粘合剂是比拟抽象的说法,详细的说,Python支持议决引入自带的cytpes库,抵达在python脚本中执行已有的静态库中的代码的目的。因而,DM对外提供的基于c/c++的接口都可以议决这个方法得到访问,假设运用Python作为接口测试的载体,得到的测试用将比运用编译型言语的测试顺序更易于修正调试。
以上是针对c/c++接口而言,关于.net平台和JAVA平台,咱们可以区分运用Python for .Net 和 Jython。前者使得Python脚本可以直接调用CLR代码,然后者使得Python可以直接调用任何的JAVA类库。
相信至此,运用Python作为跨越言语的测试工具的优越性,以前十分清楚了:
关于功用与功用测试,咱们只须要自己编写一个解释器调用脚本,就可以只须要维护一套测试脚本,而同时可以在任何驱动接口上执行测试。
在上面这个图中,测试工程师只须要关新最顶层的Testcasen.py就可以,他们所写的用例可以是地道的测试逻辑而不需关怀不一样接口的完成方法,比如一个容易的测例脚本可以是下面这样的:
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->Testcase1.py:
from dbop import * #这里的dbop就是odbc版本的衔接与支持类
from dmServer import * #dmServer类用于对被测试的服务器执行启动、中止、配置等操作
from ctypes import *
rc = -10;
dmserver1 = dmServer('d:\\dmdbms\\bin\\dmserver.exe','win','12345','service',0);
dmserver1.runserver();
tb1 = dbop();
rc = tb1.connect('127.0.0.1','SYSDBA','SYSDBA','12345','SYSTEM');
rc = tb1.exec_sql_ignore("drop table aa;");#执行drop语句而不关怀能无法执行成功
rc = tb1.exec_sql("create table aa(c int);");#执行create语句且预期成功
rc = tb1.exec_sql_failed("create table aa(c int);");#再次执行该语句,预期失败
k=((1,1),(1,1));
#执行select且预期后果集与上面定义的k类似
rc = tb1.exec_sql_with_result("select top 2 name,id from systables;",k);
rc = tb1.disconnect();
dmserver1.stopserver();
可以看到,如上所示,编写用例的人员完全不需关怀connect,exec_sql_ignore,tb1.exec_sql_failed此类的操作详细如何完成,他们只需运用并给出测试的逻辑就可以了。而测试开发人员则要完成比如上面这多个接口的odbc版本、jdbc版本、和ado.net版本。
位于测例与支持库之间的是一个Testloader顺序,这个顺序完成这几件事情:
1、 读取依据要执行的测试的配置文件,确定解释器的位置和将要运用哪种驱动;
2、 读取测试用例的内容,并将对支持类的援用改为对应驱动,比如上面的脚本中的:
from dbop import * 能够会被改为:from dbop_jdbc import *
3、 调用对应的解释器执行这个测试用例。
一个比拟容易的例子如下:
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->cfg.ini:
py_path=D:\"ACTIVE Python"\python.exe
jy_path=C:\jython2.2.1\dmjython.bat
ny_path=C:\pythonnet-2.0-alpha2\pythonnet-2.0-alpha2\python2.5-UCS2\python.exe
#driver =dotnet
driver =odbc
#driver =jdbc
Testloader:
import os
import string
import sys
def exeascript(sc,driver):
read_script(sc)
replace_lib_include(sc,driver)
write_temp_script();
cmd = get_executer_path()+ " " + "temp.py"
newfile = file("temp.py","w")
newfile.write(all_text);
newfile.close()
os.system(cmd);
os.remove("temp.py")
mode =""
scriptfile=""
lstfile=""
arg = sys.argv[1]
tempdriver=sys.argv[2]
if string.upper(arg[arg.rfind('.')+1:len(arg)])=="PY":
mode="py"
scriptfile = arg
elif string.upper(arg[arg.rfind('.')+1:len(arg)])=="LST":
mode="lst"
lstfile=arg
jyp="";
nyp="";
cyp="";
ininame = "cfg.ini"
dataList=[]
caseList=[]
gbldriver="odbc"
readini(ininame)
for line in dataList:
getini();
if mode=="lst":
#to loop execute testcase
elif mode=="py":
exeascript(scriptfile,tempdriver)
else:
print "Not support"
以上内容为大家介绍了细节分析Python在数据库测试中的应用,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注多测师。https://www.e70w.com/xwzx/