用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()

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值