大家好~我是米洛

这是一个完整的接口测试平台系列教程,希望能和大家一起学习,从0到1打造一个开源平台。

欢迎关注我的公众号测试开发坑货,获取最新文章教程!

如果阅读完毕后想和作者有更多交流,可以点击阅读原文找到底部评论区,给作者留言啦!

项目地址: https://pity.readthedocs.io/

回顾

上一篇我们已经成功编写了查询报告相关的接口。接着让我们来看单个用例写入/读取的细则。

设计测试结果表

老规矩,我们先设计需要写入的数据表

这里先说一个题外话,其实我们针对一次接口测试,最关心的部分是url,method,输入输出等部分。其实这些内容在case表里面都有涉及到,但因为我们支持了变量形式的数据,所以case表存放的可能只是初始值,而不是接口请求时候的实际值。所以我们这边设置字段的时候拿到我们最关键的信息即可,哪怕存在一定的数据冗余(指的是case表有的数据,测试结果表也有)。

至于用例等级,用例的project_id这些信息,完全可以让用户在查看用例的时候获取

  1. class PityTestResult(Base):
  2. __tablename__ = 'pity_test_result'
  3. id = Column(INT, primary_key=True)
  4. # 报告id
  5. report_id = Column(INT, index=True)
  6. # case_id
  7. case_id = Column(INT, index=True)
  8. # case_name
  9. case_name = Column(String(32))
  10. status = Column(SMALLINT, comment="对应状态 0: 成功 1: 失败 2: 出错 3: 跳过")
  11. # 开始时间
  12. start_at = Column(DATETIME, nullable=False)
  13. # 结束时间
  14. finished_at = Column(DATETIME, nullable=False)
  15. case_log = Column(TEXT)
  16. # 重试次数,预留字段
  17. retry = Column(INT, default=0)
  18. # http状态码
  19. status_code = Column(INT)
  20. url = Column(TEXT, nullable=False)
  21. body = Column(TEXT)
  22. request_method = Column(String(12), nullable=True)
  23. request_headers = Column(TEXT)
  24. cost = Column(String(12), nullable=False)
  25. asserts = Column(TEXT)
  26. response_headers = Column(TEXT)
  27. response = Column(TEXT)
  28. cookies = Column(TEXT)
  29. deleted_at = Column(DATETIME, index=True)

这边的case_name,request_method数据都是冗余的,但并不会太多。因为我没有必要为了获取case_name再去查询一次case表,而我又不得不在报告中显示用例名称

  • init方法如下

测试平台系列(49) 写入读取用例执行数据 - 图1

编写核心方法

新增测试结果

测试平台系列(49) 写入读取用例执行数据 - 图2

核心就是新建Result对象,session.add(新对象)插入到db。

通过report_id查询测试结果

测试平台系列(49) 写入读取用例执行数据 - 图3

调整执行用例方法: run_single

测试平台系列(49) 写入读取用例执行数据 - 图4

编写获取单个报告数据接口

这边报告分为2个部分,1个是报告的具体内容比如执行环境成功数量等等。另1个部分是具体执行的case结果。

测试平台系列(49) 写入读取用例执行数据 - 图5

我们先根据report_id获取执行信息(构建层),再根据report_id查出所有执行结果(用例层),最后返回report数据和test_data。

测试平台系列(49) 写入读取用例执行数据 - 图6

调整前端页面

测试平台系列(49) 写入读取用例执行数据 - 图7

上面可以看到3个case,共成功了3个,通过率大于90%的时候会被点个赞

点击下面的更多按钮可以查看到具体的case执行细节:

测试平台系列(49) 写入读取用例执行数据 - 图8

测试平台系列(49) 写入读取用例执行数据 - 图9

测试平台系列(49) 写入读取用例执行数据 - 图10

多的不说了,点个赞再走吧~