Django+httprunner3测试平台核心数据模型设计

mysql数据库配置

CREATE DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

安装pymysqlclient模块

pip install mysqlclient
image
对应的数据库参考配置如下:


# Create your models here.

# 测试平台核心模型--拆解HR用例部分


class Config(models.Model):
    name = models.CharField('名称',max_length=128,unique=True)
    base_url = models.CharField('IP/域名',max_length=256,null=True,blank=True) # 可为空或空白
    variables = models.JSONField('变量', null=True) # sqlite不支持JSONField 数据类型,需要用到mysql
    parameters = models.JSONField('参数',null=True)
    export = models.JSONField('用例返回值',null=True)
    verify = models.BooleanField('https校验',default=False)

    def __str__(self):
        return self.name


class Case(models.Model):
    config = models.OneToOneField(Config,on_delete=models.DO_NOTHING)
    file_path = models.CharField('用例文件路径',max_length=1000,default='demo_case.json')

    def __str__(self):
        return self.config.name


class Step(models.Model):
    #反向查询名称 同个模型中,两个以上字段关联同一个模型,必须指定related_name
    # 属于那条用例
    belong_case = models.ForeignKey(Case,on_delete=models.CASCADE,related_name='teststeps')
    # 引用的哪条用例
    linked_case = models.ForeignKey(Case,on_delete=models.SET_NULL,null=True,related_name='linked_steps')
    name = models.CharField('名称',max_length=128)
    variables = models.JSONField('变量', null=True)
    extract = models.JSONField('请求返回值',null=True)
    validate = models.JSONField('校验项',null=True)
    setup_hooks = models.JSONField('初始化',null=True)
    teardown_hooks = models.JSONField('清除',null=True)

    def __str__(self):
        return self.name


class Request(models.Model):
    method_choices=( # method可选的字段,
        (0,'GET'),   # 参数1:实际存储在数据库中的值, 参数2:对外显示的值
        (1,'POST'),
        (2,'PUT'),
        (3,'DELETE'),
    )
    step = models.OneToOneField(Step,on_delete=models.CASCADE,null=True)
    method = models.SmallIntegerField('请求方法',choices=method_choices,default=0)
    url = models.CharField('请求路径',default='/',max_length=1000)
    params = models.JSONField('url参数',null=True)
    headers = models.JSONField('请求头',null=True)
    cookies = models.JSONField('Cookies',null=True)
    data = models.JSONField('表单参数',null=True)
    json = models.JSONField('json参数',null=True)

    def __str__(self):
        return self.url

setting.py配置:

        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'xxxxx      #用户名
        'PASSWORD': 'xx',     #密码
        'HOST': 'xxxxx',
        'PORT': 'xxxxx',
        'TEST':{                     # 表示单元测试创建的数据库字符串编码
            'CHARSET': 'utf8',
            'COLLATION': 'utf8_general_ci',
        }
    }

同步数据库

python manage.py makemigrations 
python manage.py migrate

image
image

posted @ 2022-07-13 21:26  曹_小_伟  阅读(79)  评论(0)    收藏  举报