用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里面就可以用了。

这里示例第三方包是commons-net-3.3, 可以总这里下载jar包, http://commons.apache.org/proper/commons-net/download_net.cgi


注意这里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()
运行结果:

[root@host-192-168-53-21 jythontest]# jython importjar.py 
starting
cost 0.157999992371  second
end
.starting
cost 0.0529999732971  second
end
----------------------------------------------------------------------
Ran 2 tests in 0.215s

OK

1,286,456 ant.jar 345,048 apache-mime4j-0.6.jar 242,154 bsh-1.3.0.jar 488,353 c3p0-0.9.5.jar 2,710 c3p0-oracle-thin-extras-0.9.5.jar 324,238 cglib-nodep-2.1_3.jar 188,671 commons-beanutils-1.7.0.jar 263,965 commons-codec-1.9.jar 575,389 commons-collections-3.2.1.jar 77,857 commons-dbutils-1.6.jar 52,543 commons-exec-1.1.jar 305,001 commons-httpclient-3.1.jar 185,140 commons-io-2.4.jar 299,994 commons-jxpath-1.3.jar 245,274 commons-lang-2.3.jar 412,739 commons-lang3-3.3.2.jar 60,841 commons-logging-1.1.1.jar 62,050 commons-logging-1.1.3.jar 61,829 commons-logging-1.2.jar 354,647 cssparser-0.9.14.jar 313,898 dom4j-1.6.1.jar 77,826 ezmorph-1.0.3.jar 190,418 gson-2.2.4.jar 206,853 gson-2.3.jar 2,256,213 guava-18.0.jar 1,075,964 guava-r07.jar 45,024 hamcrest-core-1.3.jar 53,070 hamcrest-library-1.3.jar 1,452,628 htmlunit-2.15.jar 1,026,253 htmlunit-core-js-2.15.jar 590,004 httpclient-4.3.4.jar 727,567 httpclient-4.5.jar 158,975 httpclient-cache-4.5.jar 17,359 httpclient-win-4.5.jar 282,269 httpcore-4.3.2.jar 322,234 httpcore-4.4.1.jar 37,276 httpmime-4.3.4.jar 40,692 httpmime-4.5.jar 101,578 ini4j-0.5.2.jar 77,532 java-client-2.1.0.jar 226,877 jaxen-1.1-beta-7.jar 56,533 jcommander-1.29.jar 125,727 jetty-websocket-8.1.8.jar 1,006,639 jna-3.4.0.jar 913,435 jna-platform-3.4.0.jar 148,490 json-lib-2.2.3-jdk15.jar 94,360 json.jar 245,039 junit-dep-4.11.jar 704,543 jxl.jar 346,003 mail.jar 603,189 mchange-commons-java-0.2.9.jar 832,960 mysql-connector-java-5.1.22-bin.jar 536,609 mysql-jdbc.jar 125,150 nekohtml-1.9.21.jar 1,106,629 netty-3.5.7.Final.jar 4,063,471 operadriver-1.5.jar 10,642 phantomjsdriver-1.1.0.jar 2,134,039 poi-3.12-beta1-20150228.jar 30,475 poi-excelant-3.12-beta1-20150228.jar 1,213,357 poi-ooxml-3.12-beta1-20150228.jar 5,605,104 poi-ooxml-schemas-3.12-beta1-20150228.jar 1,302,674 poi-scratchpad-3.12-beta1-20150228.jar 450,284 protobuf-java-2.4.1.jar 15,808 sac-1.3.jar 3,807,821 selenium-java-2.44.0.jar 278,281 serializer-2.7.1.jar 448,038 sqljdbc.jar 466,359 sqljdbc4.jar 835,600 testng-6.8.5.jar 869,865 testng-6.9.6-20150714.181231-9.jar 10,081 uiautomator.jar 3,176,148 xalan-2.7.1.jar 1,367,760 xercesImpl-2.11.0.jar 220,536 xml-apis-1.4.01.jar 2,730,866 xmlbeans-2.6.0.jar
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值