コード例 #1
0
ファイル: MockGenerator.py プロジェクト: lutzer/sahabe
def generateMock(tables):
    content = tables.content
    mockModule ="""
import string
import random
import uuid as uid
import hashlib
import datetime


def randomText(size=64 , chars=string.ascii_letters + string.digits + string.punctuation):
    return ''.join(random.choice(chars) for _ in range(random.randint(5, size)))

def randomEmail(size=64): 
    return randomText(size - 10) + "@sahabe.de"
    
def randomFixedLengthText(size=64, chars=string.ascii_letters + string.digits + string.punctuation):
    return ''.join(random.choice(chars) for _ in range(size))

def uuid():
    return str(uid.uuid4())

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

def SHA2():
    return hashlib.sha256(randomText(16)).hexdigest()
    
def MD5():
    return hashlib.md5(randomText(16)).hexdigest()

class DBMock():
""" 
    init ="""
    def __init__(self):\n"""

    for table in content:
        elementName = generator.asElementName(table.name)
        className = generator.asClassName(table.name)
        dependencies = generator.getDependencies(tables, table.name)
        classArgs = ""
        for dependency in dependencies:
            classArgs += "self.%s, "%generator.asElementName(dependency)
        classArgs = classArgs.rstrip(", ")
        init +="%sself.%s = DBMock.%s(%s)\n"%(" "*8, elementName, className, classArgs) 
        
    
    classes =""
            
    for table in content:
        elementName = generator.asElementName(table.name)
        className = generator.asClassName(table.name)
        dependencies = generator.getDependencies(tables, table.name)
        classArgs = ""
        for dependency in dependencies:
            classArgs += ", %s"%generator.asElementName(dependency)
        tableClass = """
    class %s(object):
    
        def __init__(self%s):\n"""%(className, classArgs)
    
        elements = ""
        for column in table.columns:
            value = ""
            references = column.getReferenceIfExists(table)
            
            if references is not None:        
                value = "%s.%s"%(generator.asElementName(references.referToTable),
                                 generator.asElementName(references.referToColumn))
            else:    
                value = generator.randomValueByType(column)
            
            elements += "%sself.%s = %s\n"%(" "*12, generator.asElementName(column.name), value)

        tableClass += elements
        classes += tableClass
        
        print "generate Mock class for %s"%className
            
    module = open("generated/MockModule.py", "w+")    
    module.write(mockModule+
                 init+
                 classes)
    module.close()