用python做自己主动化測试--对Java代码做单元測试 (1)
大多数时间我们说的python。指的是C实现的python, 在这篇文章里,我们要说的是java实现的python,她的名字叫Jython, 大家能够到到官方站点http://www.jython.org/ 看看。近期2年非常活跃,公布新版本号比較多。事实上我在jython 2.1版本号的时候就開始接触过,但当时看到社区不活跃,没继续学习应用下去。近期公司有几个项目须要对外公布java 实现的API, java毕竟没那么熟悉,写起API接口測试的代码来速度还是没那么快。 还是高大上的python来的快。 python太强大,强大到非常干不论什么事情。不论什么事情要写代码做的。我第一个想到的是用python去解决,然后我也没有压力,没有太大动力去学习其它语言了,我不知道这是祸还是福。
以下一个简单样例说明怎么对java代码做单元測试。
近期一个项目要实现一个唯一的ID,开发是用java的 SecureRandom实现的,话说非常难出现反复,我还是想測測多大概率会出现反复,test_unique实现了这个单元測试代码,事实上是对SecureRandom方法的一个单元測试。test_max 加上这里就是为了演示用而已。
from java.security import SecureRandom
from java.lang import Math
这2个包都是JDk里自带的方法,不是jython里的,我们对这2个方法做測试。
#!/usr/bin/env jython
#coding=utf8
from java.security import SecureRandom
from java.lang import Math
import unittest
import time
import sys
class UniqueRandomTest(unittest.TestCase):
def setUp(self):
self.start_time=time.time()
print "starting\n",
self.dic={}
def test_unique(self):
unique=False
for i in xrange(1,100000):
random=SecureRandom()
a=Math.abs(random.nextLong())
if self.dic.has_key(a):
unique=True
print "duplicate "
break
else:
self.dic[a]=1
self.assertEquals(unique,False)
def test_max(self):
self.assertEquals(Math.max(8,5),8)
def tearDown(self):
print "cost", time.time()-self.start_time," second"
print "end"执行单元測试。 结果是Finding files... done.
Importing test modules ... done.
starting
cost 0.000999927520752 second
end
starting
cost 1.85600018501 second
end
----------------------------------------------------------------------
Ran 2 tests in 2.043s
OK
假设想命令行执行unittest, 加上。
if __name__ == '__main__':
unittest.main()
浙公网安备 33010602011771号