DataBaseORM.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. from sqlalchemy import Column, String, Integer, DateTime, Boolean, Table, ForeignKey
  2. from sqlalchemy.orm import relationship
  3. from sqlalchemy import create_engine
  4. from sqlalchemy.ext.declarative import declarative_base
  5. DATABASE_URL = 'sqlite:///testrun.db'
  6. engine = create_engine(DATABASE_URL)
  7. base = declarative_base()
  8. #
  9. # Testrun models
  10. #
  11. class TestrunLog(base):
  12. #
  13. # summary on Testrun results
  14. #
  15. __tablename__ = "testruns"
  16. # columns
  17. id = Column(Integer, primary_key=True)
  18. testrunName = Column(String, nullable=False)
  19. logfileName = Column(String, nullable=False)
  20. startTime = Column(DateTime, nullable=False)
  21. endTime = Column(DateTime, nullable=False)
  22. #globalVars = Column(String, nullable=True)
  23. dataFile = Column(String, nullable=True)
  24. statusOk = Column(Integer, nullable=False)
  25. statusFailed = Column(Integer, nullable=False)
  26. statusPaused = Column(Integer, nullable=False)
  27. # relationships
  28. globalVars = relationship('GlobalAttribute')
  29. testcase_sequences = relationship('TestCaseSequenceLog')
  30. class GlobalAttribute(base):
  31. #
  32. # global vars
  33. #
  34. __tablename__ = 'globals'
  35. # columns
  36. id = Column(Integer, primary_key=True)
  37. name = Column(String, nullable=False)
  38. value = Column(String, nullable=True)
  39. testrun_id = Column(Integer, ForeignKey('testruns.id'), nullable=False)
  40. # relationships
  41. testrun = relationship('TestrunLog', foreign_keys=[testrun_id])
  42. #
  43. # Test Case Sequence models
  44. #
  45. class TestCaseSequenceLog(base):
  46. #
  47. # TestCase Sequence
  48. #
  49. __tablename__ = 'testCaseSequences'
  50. # columns
  51. id = Column(Integer, primary_key=True)
  52. testrun_id = Column(Integer, ForeignKey('testruns.id'), nullable=False)
  53. # relationships
  54. testrun = relationship('TestrunLog', foreign_keys=[testrun_id])
  55. testcases = relationship('TestCaseLog')
  56. #
  57. # Test Case models
  58. #
  59. class TestCaseLog(base):
  60. #
  61. # TestCase results
  62. #
  63. __tablename__ = 'testCases'
  64. # columns
  65. id = Column(Integer, primary_key=True)
  66. testcase_sequence_id = Column(Integer, ForeignKey('testCaseSequences.id'), nullable=False)
  67. # relationships
  68. testcase_sequence = relationship('TestCaseSequenceLog', foreign_keys=[testcase_sequence_id])
  69. fields = relationship('TestCaseField')
  70. networkInfo = relationship('TestCaseNetworkInfo')
  71. class TestCaseField(base):
  72. #
  73. # field for a TestCase results
  74. #
  75. __tablename__ = 'testCaseFields'
  76. # columns
  77. id = Column(Integer, primary_key=True)
  78. name = Column(String, nullable=False)
  79. value = Column(String, nullable=True)
  80. testcase_id = Column(Integer, ForeignKey('testCases.id'), nullable=False)
  81. # relationships
  82. testcase = relationship('TestCaseLog', foreign_keys=[testcase_id])
  83. class TestCaseNetworkInfo(base):
  84. #
  85. # network info for a TestCase
  86. #
  87. __tablename__ = 'networkInfo'
  88. # columns
  89. id = Column(Integer, primary_key=True)
  90. browserName = Column(String, nullable=True)
  91. status = Column(Integer, nullable=True)
  92. method = Column(String, nullable=True)
  93. url = Column(String, nullable=True)
  94. contentType = Column(String, nullable=True)
  95. contentSize = Column(Integer, nullable=True)
  96. headers = Column(String, nullable=True)
  97. params = Column(String, nullable=True)
  98. response = Column(String, nullable=True)
  99. startDateTime = Column(DateTime, nullable=True)
  100. duration = Column(Integer, nullable=True)
  101. testcase_id = Column(Integer, ForeignKey('testCases.id'), nullable=True)
  102. # relationships
  103. testcase = relationship('TestCaseLog', foreign_keys=[testcase_id])
  104. # create tables
  105. #if __name__ == '__main__':
  106. base.metadata.create_all(engine)