基于模板的简易代码生成器Python源码


基于模板的简易代码生成器Python源码,需要写的单元测试太多,框架又是类似的,但类名和变量名却各不相同。索性花几分钟用Python脚本写个简易代码生成器,顺便记录于此,得空优化一下,以备后用。

代码

import os
import datetime

tplFilePath = 'E://template.java' 
path = 'E://'

testObjList = ['Deposit',\
              'Config',\
              'FundsFilter',\
              'MobileOpenAuth',\
              'MobilePartnerRiskLevel',\
              'MobilePhoneChargeOrder',\
              'MobileSmspayValicode',\
              'MobileSystemParam',\
              'MobileVd',\
              'Order',\
              'OriginalOrder',\
              'Package',\
              'Plantform',\
              'Seq',\
              'Service',\
              'TipsDelivery',\
              'Trustlogin',\
              'UpdateConfig',\
              'UpdateHint',\
              'UserAccount',\
              'UserDao',\
              'UserStatus'\
              ]

for testObj in testObjList:

    testObjVarName = testObj[0].lower() + testObj[1:]

    filename = 'Ibatis' + testObj +'DAOTester.java'
    author = 'chenxin'

    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')

    tplFile = open(tplFilePath)
    gFile = open(path+filename ,"w")

    fileList = tplFile.readlines()

    for fileLine in fileList:
        line = fileLine.replace('${author}',author)\
            .replace('${now}',now)\
            .replace('${testObject}',testObj)\
            .replace('${testObjVarName}',testObjVarName)
        print line
        gFile.writelines(line)

    tplFile.close()
    gFile.close()

模板

/**
 * created since ${now}
 */
package com.alipay.mspcore.common.dal.ibatis;

import java.util.Date;

import junit.framework.Assert;

import com.alipay.mspcore.common.dal.daointerface.${testObject}DAO;
import com.alipay.mspcore.common.dal.dataobject.${testObject};
import com.alipay.sofa.runtime.test.AnnotatedAutowireSofaTestCase;
import com.iwallet.biz.common.util.money.Money;

/**
 * @author ${author}
 * @version $Id: Ibatis${testObject}DAOTester.java, v 0.1 ${now} ${author} Exp $
 */
public class Ibatis${testObject}DAOTester extends AnnotatedAutowireSofaTestCase {

    @Override
    public String[] getConfigurationLocations() {
        return new String[] { "META-INF/spring/common-dal-db.xml",
                "META-INF/spring/mobilespcore-common-dal-dao.xml", "META-INF/spring/common-dal.xml" };
    }

    @Override
    public String[] getResourceFilterNames() {
        return new String[] { "META-INF/spring/common-dal-db.xml" };
    }

    @Override
    public String[] getWebServiceConfigurationLocations() {
        return new String[] {};
    }

    private ${testObject}DAO get${testObject}DAO() {
        ${testObject}DAO dao = (${testObject}DAO) this.getBean("${testObjVarName}DAO", ${testObject}DAO.class, null);
        return dao;
    }

    public void test${testObject}DAO() {
        ${testObject}DAO configDAO = get${testObject}DAO();
        Assert.assertNotNull(configDAO);
    }

    public void test() {
        ${testObject}DO ${testObjVarName}DO = new ${testObject}DO();
        ${testObjVarName}DO.setGmtCreate(new Date());
        ${testObjVarName}DO.setGmtModified(new Date());
        ${testObjVarName}DO.setId(10000);

        ${testObject}DAO ${testObjVarName}DAO = get${testObject}DAO();
        long result = ${testObjVarName}DAO.insert(${testObjVarName}DO);
        Assert.assertTrue(result > 0);
    }
}

效果

/**
 * created since 2011-12-30 14:31:38
 */
package com.alipay.mspcore.common.dal.ibatis;

import java.util.Date;

import junit.framework.Assert;

import com.alipay.mspcore.common.dal.daointerface.UpdateHintDAO;
import com.alipay.mspcore.common.dal.dataobject.UpdateHint;
import com.alipay.sofa.runtime.test.AnnotatedAutowireSofaTestCase;
import com.iwallet.biz.common.util.money.Money;

/**
 * @author chenxin
 * @version $Id: IbatisUpdateHintDAOTester.java, v 0.1 2011-12-30 14:31:38 chenxin Exp $
 */
public class IbatisUpdateHintDAOTester extends AnnotatedAutowireSofaTestCase {

    @Override
    public String[] getConfigurationLocations() {
        return new String[] { "META-INF/spring/common-dal-db.xml",
                "META-INF/spring/mobilespcore-common-dal-dao.xml", "META-INF/spring/common-dal.xml" };
    }

    @Override
    public String[] getResourceFilterNames() {
        return new String[] { "META-INF/spring/common-dal-db.xml" };
    }

    @Override
    public String[] getWebServiceConfigurationLocations() {
        return new String[] {};
    }

    private UpdateHintDAO getUpdateHintDAO() {
        UpdateHintDAO dao = (UpdateHintDAO) this.getBean("updateHintDAO", UpdateHintDAO.class, null);
        return dao;
    }

    public void testUpdateHintDAO() {
        UpdateHintDAO configDAO = getUpdateHintDAO();
        Assert.assertNotNull(configDAO);
    }

    public void test() {
        UpdateHintDO updateHintDO = new UpdateHintDO();
        updateHintDO.setGmtCreate(new Date());
        updateHintDO.setGmtModified(new Date());
        updateHintDO.setId(10000);

        UpdateHintDAO updateHintDAO = getUpdateHintDAO();
        long result = updateHintDAO.insert(updateHintDO);
        Assert.assertTrue(result > 0);
    }
}

Python向PHP发起GET与POST请求

《Python核心编程 第二版》.(Wesley J. Chun ).[高清PDF中文版]

《Python开发技术详解》.( 周伟,宗杰).[高清PDF扫描版+随书视频+代码]

Python脚本获取Linux系统信息

在Ubuntu下用Python搭建桌面算法交易研究环境

Python 语言的发展简史

Python 的详细介绍:请点这里
Python 的下载地址:请点这里

本文永久更新链接地址:

相关内容