コード例 #1
0
ファイル: TestsGenerator.py プロジェクト: lutzer/sahabe
def generateTest(tables):
    content = tables.content   
    for table in content:
        tableName = generator.asClassName(table.name)
        moduleName = tableName + ".py"
        
        imports = """
import Tables as tables
import MockModule as mock
import db.main.DBApiModule as db
from _mysql_exceptions import DataError, OperationalError, IntegrityError
        
"""
        
        classDef="""
class %s(tables.Tables):
    '''
    - Test: insertion and fetching data from/to table
    - Test: update entry and its references
    - Test: drop entry and its references
    - Test: references.
    - Test: inserting invalid modifiedAt
    - Test: NOT NULLS constrains
    - Test: UNIQUE constrains
    - Test: FOREIGN KEY CONSTRAINS
    '''     
        
        """%(tableName)    
        
            
        dependencies="""
    def __initDependencies(self):
        self.initDBMockContents()\n%s%s"""%(generator.attributes(table, 8),
                                            generator.insertReferences(tables, table, 8))
        
        setUp ="""
    def setUp(self):
        self.connect()
        self.__initDependencies()
        """    
        
        tearDown ="""
    def tearDown(self):
        self.conn.close()
        """

        select ="""
        rows = db.selectFrom(self.conn, {"%s"}, "*", id=self.%s)
        """%(table.name, table.columns[0].name)
        
        insertion ="""
    ''' INSERTION TESTS '''
    
    def testInsertion(self):\n%s%s\n%s
        """%(generator.insertToDB(table, 8), select, generateAssertEquals(table, "", 8))
        
        updates ="""
    ''' UPDATE TESTS '''\n\n%s"""%(generateUpdateTest(table, 4))
        
        
        drop ="""
    ''' DROP TESTS '''\n\n%s"""%(generateDropTest(tables, table, 4))
        
        dataTypes ="""
    ''' DATA TYPE TESTS '''\n\n%s"""%(generateDataTypeTest(table, 4))
        
        testModule = (imports + classDef + dependencies + setUp + tearDown + insertion + updates +
                     drop)
        module = open("generated/"+moduleName, "w+")    
        module.write(testModule)
        module.close()
        print "ws_test for %s were generated"%tableName