测试开发进阶(三十五)
导入测试数据
在Pycharm中连接数据库
执行sql
测试数据在:https://github.com/zx490336534/ApiTest/tree/master/test
按照顺序执行
选择执行的目标
处理时间格式
从数据库中可以看出,使用models.DateTimeField
生成的时间数据格式为2019-11-06 06:21:19.355242
我们需要返回一个``2019-11-06 06:21:19`的内容
所以我们需要重写list
1 | def list(self, request, *args, **kwargs): |
将对数据的处理写在get_count_by_project
函数中
通过调试可以看到获取到的datas对象为一个包含字典的列表
很容易的想到使用正则
来进行提取,并修改字典内容
1 | mtch = re.search(r'(.*)T(.*)\..*?', item['create_time']) |
获取项目数据
获取接口总数
1 | project_id = item['id'] |
interfaces_testcases_objs
相当于调用了以下SQL语句
1 | SELECT `tb_interfaces`.`id`, COUNT(`tb_testcases`.`id`) AS `testcases` FROM `tb_interfaces` LEFT OUTER JOIN `tb_testcases` ON (`tb_interfaces`.`id` = `tb_testcases`.`interface_id`) WHERE (`tb_interfaces`.`is_delete` = False AND `tb_interfaces`.`project_id` = 1) GROUP BY `tb_interfaces`.`id` ORDER BY NULL |
获取用例总数
1 | testcases_count = 0 |
获取配置数量
1 | interfaces_configures_objs = Interfaces.objects.values('id').annotate(configures=Count('configures')). \ |
相当于执行了以下SQL
1 | SELECT `tb_interfaces`.`id`, COUNT(`tb_configures`.`id`) AS `configures` FROM `tb_interfaces` LEFT OUTER JOIN `tb_configures` ON (`tb_interfaces`.`id` = `tb_configures`.`interface_id`) WHERE (`tb_interfaces`.`is_delete` = False AND `tb_interfaces`.`project_id` = 1) GROUP BY `tb_interfaces`.`id` ORDER BY NULL |
获取测试套件总数
1 | testsuits_count = Testsuits.objects.filter(project_id=project_id, is_delete=False).count() |
整个函数
1 | import re |
结果
返回分页内容
配置setting.py
1 | REST_FRAMEWORK = { |
编写自定义分页操作
utils.pagination.PageNumberPaginationManual
1 | from django.conf import settings |