DjangoRF-15-创建testcases子应用-测试记录模型和reports子应用

1、测试记录属于测试任务的,
编写模型,在test cases子应用下。
class TestRecord(BaseModel):
ARGUMENTS_HELP = ‘json数据,支持的key有 thread_num: int 线程数 marks: str 标记 retry: int 重试次数’

task = models.ForeignKey(Task, verbose_name='测试任务', on_delete=models.PROTECT, related_name='test_records')
environment = models.ForeignKey(Environment, verbose_name='运行环境', on_delete=models.PROTECT, help_text='运行环境')
version = models.CharField('版本', max_length=64, help_text='版本')
arguments = models.JSONField('运行参数', help_text=ARGUMENTS_HELP, null=True, blank=True)
runner = models.CharField('执行者', max_length=64, help_text='执行者')

def __str__(self):
    return '{}任务的运行记录'.format(self.task.name)

class Meta:
    db_table = 'tb_test_record'
    verbose_name = '运行记录'
    verbose_name_plural = verbose_name
    ordering = ['-c_time']

记得进行数据迁移

测试任务执行完还会生成详细的结果,单独创建一个测试报告子应用,用来管理测试报告,以便将来扩展分析功能就是测试报告模块

1、首先apps下创建reports子应用
然后进行注册,
2、编写reports模型,记得迁移。
3、根据测试任务,设计测试任务接口。因为是执行测试任务,设计的接口/tasks/pk/run/进行接口执行
接下来就是进行序列化编写
在这里插入图片描述
4、权限和任务权限一样
5、编写视图
@action(methods=[‘post’], detail=True) # ‘/tasks/pk/run/’
def run(self, request, pk):
“”"
测试任务同步执行
“”"
# 同步执行任务
# 1. 获取当前任务
task = self.get_object()
# 2. 接受前端传递的数据并创建序列化器并校验
# serializer = TestRecordSerializer(data=request.data)
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
# 3. 生成测试记录
test_record = serializer.save(task=task)
# 4. 准备测试数据
data = {
‘name’: task.project.name,
‘host’: test_record.environment.host,
‘test_suits’: task.get_test_suits()
}
if test_record.environment.db_config:
# 要看模型的的格式,是json,还是Chat,是Chat,需要转换
data[‘db_config’] = test_record.environment.db_config
# 5. 准备执行参数
# 不自动执行的参数, debug
args = [‘–auto=2’, ‘–debug’]
# 添加日志文件
# 测试日志文件名的格式为测试记录的id.log
logfile = settings.TEST_LOG_DIR / ‘{}.log’.format(test_record.id)
args.append(‘–logfile={}’.format(logfile))
# 执行参数,marks, thread_num
if test_record.arguments:
for key, value in test_record.arguments.items():
if value:
args.append(‘–{}={}’.format(key, value))
# 6. 执行测试
result = easytest.main(args, test_data=data).run()
# 7. 生成测试报告
report_data = {
‘record’: test_record.id,
‘status’: result[‘status’],
‘result’: result[‘test_suit_result’],
‘total_test_suit’: result[‘total_test_suit’],
‘total_test_case’: result[‘total_test_case’],
‘success_test_case’: result[‘success_test_case’],
‘fail_test_case’: result[‘fail_test_case’],
‘skip_test_case’: result[‘skip_test_case’],
‘error_test_case’: result[‘error_test_case’],
‘duration’: result[‘duration’]
}
# 把字段进行序列化,
report_serializer = ReportSerializer(data=report_data)
# 序列化进行校验
report_serializer.is_valid(raise_exception=True)
report_serializer.save()
return Response(serializer.data, status=201)

配置url进行调试。

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值