用python做自动化测试--对Java代码做单元测试 (2)-导入第三方jar包

用Jython对Java做单元测试,当然是为了测试公司开发的java代码,这样就涉及到导入第三包的问题,怎么导入第三方包? 可以利用http://blog.csdn.net/powerccna/article/details/37739207 这里的实现的函数,扫描指定目录下的jar包,然后通过sys.path.append()函数加入到jython的sys.path里面。

for jar_file in scan_files("/home/jim/java_jar",postfix=".jar"):
    sys.path.append(jar_file)

import 第三方包,必须先append进来后才可以import,要不然会报找不到包。有些人在使用过程中说有要同时加入到CLASSPATH里面,我使用的时候,只是mysql driver这个jar包需要加入到CLASSPATH里面,其他的直接加入到sys.path里面就可以用了。

注意这里from org.apache.commons.net.ftp import FTPClient, 还是和cpython有点不一样的,FTPClient在这里是个文件,对应Cpython里面叫着一个模块,在Cpython里面要初始化FTPClient这个类,应该是ftp=FTPClient.FTPClient(), 因为FTPClient.FTPClient才是真正的类,但这里是ftp=FTPClient(),Jython是java实现的,遵守java的规则多点吧。

#!/usr/bin/env jython
#coding=utf-8

import sys
import os
import java
import unittest
import time

#scan_files是在另外一个地方实现的函数,这里删除了函数的实现方法,是为了大家看单元测试这块清晰
for jar_file in scan_files("/home/jim/java_jar",postfix=".jar"):
    sys.path.append(jar_file)

#print sys.path

from com.mysql.jdbc import Driver
import java.sql.Connection
from java.sql import DriverManager
import org.apache.commons.net.ftp.FTP;
from org.apache.commons.net.ftp import FTPClient
import org.apache.commons.net.ftp.FTPReply

def mysql_driver_test():
    java.lang.Class.forName('com.mysql.jdbc.Driver')
    conn = DriverManager.getConnection("jdbc:mysql://192.168.19.21:3306/mysql","root","root");

class FTPClientTest(unittest.TestCase):
    def setUp(self):
        self.start_time=time.time()
        print "starting\n", 

    def test_login(self):
        ftp=FTPClient()
        ftp.connect("192.168.23.117")
        ftp.login("root","root")
        self.assertEquals(ftp.getReplyCode(),230)

    def test_files_list(self):
        #这里之所以重新登录ftp服务器,不重用前面case的结果,就是为了保持各个case的独立性,确保不会
        #因为前面case的原因影响后继的测试
        file_existing=False
        ftp=FTPClient()
        ftp.connect("192.168.23.117")
        ftp.login("root","root")

        if ftp.getReplyCode()==230:
            files = ftp.listNames("/export/home/test")
            for fi in files:
                if "python-2.5-sol10-x86-local.gz" in fi:
                    file_existing=True
                    break

        self.assertEquals(file_existing,True)

    def tearDown(self):
        print "cost", time.time()-self.start_time," second"
        print "end"    

if __name__=="__main__":
    unittest.main()

运行结果:

[[email protected] jythontest]# jython importjar.py

starting

cost 0.157999992371  second

end

.starting

cost 0.0529999732971  second

end

----------------------------------------------------------------------

Ran 2 tests in 0.215s

OK

用python做自动化测试--对Java代码做单元测试 (2)-导入第三方jar包

时间: 2024-10-23 02:57:21

用python做自动化测试--对Java代码做单元测试 (2)-导入第三方jar包的相关文章

用python做自动化测试--对Java代码做单元测试 (1)

大多数时间我们说的python,指的是C实现的python, 在这篇文章里,我们要说的是java实现的python,她的名字叫Jython, 大家可以到到官方网站http://www.jython.org/ 看看,最近2年很活跃,发布新版本比较多,其实我在jython 2.1版本的时候就开始接触过,但当时看到社区不活跃,没继续学习应用下去.最近公司有几个项目需要对外发布java 实现的API, java毕竟没那么熟悉,写起API接口测试的代码来速度还是没那么快, 还是高大上的python来的快,

使用python做你自己的自动化测试--对Java代码做单元测试 (2)-导入第三方jar包裹

使用Jython对Java做单元测试,当然,为了测试开发java代码.这涉及到引入第三包的问题,如何导入第三方的包? 您可以使用http://blog.csdn.net/powerccna/article/details/37739207 这里的实现的函数,扫描指定文件夹下的jar包,然后通过sys.path.append()函数增加到jython的sys.path里面. for jar_file in scan_files("/home/jim/java_jar",postfix=&

Java编程思想笔记:(Ant 求助)Eclipse生成/导入第三方jar包

最近读Thinking in Java,遇到第三章使用作者Bruce Eckel编写的官方包,但是从官方只能下载到.java格式的源代码. 走了点儿弯路,搞了一下,将作者的代码在Eclipse中新建一个项目导入进来.然后使用Eclipse->Export导出成jar包. 然后在我需要使用作者编写的Api的项目中,在项目上右键->properties->java build path->library->Add external jars->选择你要导入的jar包,确定(

使用Java命令行方式导入第三方jar包来运行Java程序的命令

1.首先使用命令行进入到a.java所在的文件夹:(比如我的在D:\javaeeworkspace\SharedPS_WS\src\com\dyf\main 这样一个路径下,) d: 回车, cd D:\javaeeworkspace\SharedPS_WS\src\com\dyf\main 回车, 2.使用javac命令运行a.java源文件,运行时需要使用到第三方jar包时,使用 –classpath参数来指定jar包所在路径: 比如我的cxf框架的jar包在 C:\D\Java\cxf\a

Java代码实现excel数据导入到Oracle

1.首先需要两个jar包jxl.jar,ojdbc.jar(注意版本,版本不合适会报版本错误)2.代码: Java代码   import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.Bi

java项目中可能会使用到的jar包解释

一.Struts2 用的版本是struts2.3.1.1 一个简单的Struts项目所需的jar包有如下8个 1. struts2-core-2.3.1.1.jar: Struts2的核心类库. 2. xwork-core-2.3.1.1.jar: XWork核心类,XWork是一个标准的command模式实现,并且完全从web层剥离出来.WebWork被构建在Xwork上,而Struts2由Struts1和WebWork两个经典的MVC框架发展而来. 3. ognl-3.0.3.jar: 支持

JAVA、android中常用的一些jar包的作用

正文: 这里主要介绍的是hibernate使用到的.jar Hibernate一共包括了23个jar包,令人眼花缭乱.本文将详细讲解Hibernate每个jar包的作用,便于你在应用中根据自己的需要进行取舍. 下载Hibernate,例如2.0.3稳定版本,解压缩,可以看到一个hibernate2.jar和lib目录下有22个jar包: hibernate2.jar: Hibernate的库,没有什么可说的,必须使用的jar包 cglib-asm.jar: CGLIB库,Hibernate用它来

java动态载入指定的类或者jar包反射调用其方法

序言 有时候.项目中会用到java动态载入指定的类或者jar包反射调用其方法来达到模块的分离,使各个功能之间耦合性大大减少,更加的模块化.代码利用率更高.模式中的代理模式就用到java的这一机制. 下边就让我们通过代码来看看怎样实现此功能. 代码具体 package loadjarclass; import java.io.File; import java.lang.reflect.Method; import java.net.URL; import java.net.URLClassLoa

C++项目通过JNI使用Java第三方jar包

最近在C++项目中碰到了需要使用第三方公司开发的Java jar包的问题,最后使用了JNI来解决. 参考了网络上不少的方法介绍, 大多数介绍JNI的文章讲的的都是Java通过JNI来调C的本地代码,其实这个也可以反过来用就是C的本地代码通过创建Java虚拟机调用java方法.下面贴一下解决实例C2JavaJym.c,注释不是很多. #include <jni.h> #include <stdlib.h> #include <string.h> /*C字符串转JNI字符串