| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- # coding=utf-8
- """
- 插件测试模型
- 存储插件测试执行记录和结果
- """
- import uuid_utils.compat as uuid
- from django.db import models
- from common.mixins.app_model_mixin import AppModelMixin
- class PluginTestStatus(models.TextChoices):
- """测试状态"""
- PENDING = 'PENDING', '待执行'
- RUNNING = 'RUNNING', '执行中'
- SUCCESS = 'SUCCESS', '成功'
- FAILED = 'FAILED', '失败'
- ERROR = 'ERROR', '错误'
- class PluginTest(AppModelMixin):
- """插件测试记录"""
- id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
- plugin = models.ForeignKey(
- 'plugin.Plugin',
- on_delete=models.CASCADE,
- db_constraint=False,
- verbose_name="插件",
- db_index=True
- )
- version = models.CharField(max_length=32, verbose_name="测试版本", default="")
- test_type = models.CharField(max_length=32, verbose_name="测试类型", default="smoke")
- status = models.CharField(
- max_length=20,
- choices=PluginTestStatus.choices,
- default=PluginTestStatus.PENDING,
- verbose_name="测试状态"
- )
- input_data = models.JSONField(verbose_name="测试输入", default=dict)
- output_data = models.JSONField(verbose_name="测试输出", default=dict)
- error_code = models.CharField(max_length=32, verbose_name="错误码", default="")
- error_message = models.TextField(verbose_name="错误信息", default="")
- duration_ms = models.IntegerField(verbose_name="执行耗时(毫秒)", default=0)
- passed = models.BooleanField(verbose_name="是否通过", default=False)
- class Meta:
- db_table = "plugin_test"
- ordering = ['-create_time']
- def __str__(self):
- return f"PluginTest({self.plugin_id} v{self.version}) - {self.status}"
|