如何使用python 语言来实现测试开发
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用python 语言来实现测试开发相关的知识,希望对你有一定的参考价值。
参考技术A 对于各种驱动接口,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.1; User ID = SYSDBA; PWD = SYSDBA; Database = SYSTEM; port = 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测试框架进行维护。
这样的好处就是便于测试人员将精力专精在一个方向,免于“什么都会一点,但什么都不精”的情况。当然测试人员具备广阔的知识面,会使用各种常见的开发工具与平台是好事情,并且也是必要的,不过在短时间内要求迅速能够胜任大多数任务也是企业在人才培养上的期望目标。本回答被提问者和网友采纳
在python程序中调用java代码
python是一门“胶水”语言,非常灵活多变,但是在一些特殊的时候,也需要调用其它语言来协助实现更多的功能;在公司使用python进行接口测试的时候,会遇到有些接口数据是由公司的开发人员进行自定义的加密算法进行加密的,此时,要开发告诉加密代码是不太可能的。跟开发小哥沟通时,很多时候都是由他给一个jar包,然后剩下的就由测试人员来发挥了。
那python 该如何使用这个jar包呢?
这里给大家介绍的是jpype;
一、什么是Jpype
JPype是一个能够让 python 代码方便地调用 Java 代码的工具;
二、安装Jpype
pip install jpype1 (注意:是jpype1哦,这个1请一定不要忘记)
三、Jpype的使用流程
Jpype是给python程序员来使用的。他能调用启jar包,其实还是要去启用jvm来对java代码进行运行;所以请确保你的jdk正确安装并配置好环境变量。
基本流程:
①、使用jpype开启jvm
②、加载java类
③、调用java方法
④、关闭jvm(不是真正意义上的关闭,卸载之前加载的类)
举例说明:
1、先写好java代码,并生成jar包;
package com.pyjava.demo;
public class Demo1 {
public int add(int a ,int b) {
return a+b;
}
}
导出成jar包:pyjava.jar
2、使用Jpype代码:
import jpype
import os
jarpath = os.path.join(os.path.abspath('.'), '//Users//luoman//file//pyjava.jar') #定义变量引用jar包的路径
# 1、开启jvm
jvmpath = jpype.get_default_jvm_path() #获取jvm的路径,一般情况下由此函数获取就可以
jpype.startJVM(jvmpath, "-ea", "-Djava.class.path=%s" % (jarpath)) # 使用startJvm()函数 启动jvm
# 2、加载java类
javaclass = jpype.JClass("com.pyjava.demo.Demo1") # 此处要写长类名(包名.类名)
# 3、调用java方法
jc = javaclass() #定义java对象
sum = jc.add(3,4) #调用jar包中的函数
print('两数之和为:',sum)
# 4、关闭jvm
jpype.shutdownJVM()
运行结果:两数之和为:7
也可以直接调用java的api,比如调用java的标准输出语句:
java.lang.System.out.println("helloworld")
四、startJVM() 函数详细说明
startJVM() 函数的作用是启动 JAVA 虚拟机
jpype.startJVM() 的定义
startJVM(jvm, *args)
参数说明:
jvm:描述你系统中 jvm.dll 文件所在的路径,可以直接使用get_default_jvm_path()函数获取默认路径,或者写jvm.dll的绝对路径也可以
*args:为可选参数,只要是合法的jvm启动参数都可以(大家可以百度一下jvm的启动参数)
"-Djava.class.path=%s"?%?(jarpath) 此处是引用jar包,如果有多个jar包要引用的话可以这么写:
-Djava.class.path=%s,%s,%s" % (jarpath1,jarpath2,jarpath3)
2020年 第二期《python全栈测试开发》网络课程于3月29日开班,欢迎加群:1085210541
以上是关于如何使用python 语言来实现测试开发的主要内容,如果未能解决你的问题,请参考以下文章
Java or Python?测试开发工程师如何选择合适的编程语言?
Web开发Python实现Web服务器(Flask测试后台框架模板)
Web开发Python实现Web服务器(Flask测试统计图表)