前面小编介绍过如何通过钉钉机器人在钉钉群中发送禅道的缺陷内容,今天小编在这里介绍如何将统计好的测试结果和Allure报告一起发送到钉钉群中。

这样群里的同事,直接可以点击使用,方便更快的了解到自动化结果的执行情况。

编写用例

小编先编写几个简单的用例,然后通过Allure生成测试报告。

  1. # coding:utf-8

  2. import pytest

  3. class TestCase:

  4. def test_01(self):

  5. print('---用例01---')

  6. assert 1

  7. def test_02(self):

  8. print('---用例02---')

  9. assert 0

  10. def test_03(self):

  11. print('---用例03---')

  12. assert 1

  13. def test_04(self):

  14. print('---用例04---')

  15. assert 0

编写完成后,直接在cmd中执行以下命令,生成测试报告。

执行报告命令:

pytest test03.py --alluredir ./report/result allure generate report/result/ -o report/html --clean

 获取Allure结果

测试报告生成后,可以通过查看对应目录下的json文件进行查看测试用例的执行情况,通过分析执行情况,进行分析出来测试结果。

目录:...\report\html\widgets\summary.json(根据报告存放路径自行查看)。

  1. {

  2. "reportName" : "Allure Report",

  3. "testRuns" : [ ],

  4. "statistic" : {

  5. "failed" : 2,

  6. "broken" : 0,

  7. "skipped" : 0,

  8. "passed" : 2,

  9. "unknown" : 0,

  10. "total" : 4

  11. },

  12. "time" : {

  13. "start" : 1678778457211,

  14. "stop" : 1678778457313,

  15. "duration" : 102,

  16. "minDuration" : 0,

  17. "maxDuration" : 10,

  18. "sumDuration" : 12

  19. }

  20. }

通过上述json中的statistic参数,分析得到一共执行了4条用例,其中失败的2个,成功的2个,跳过的为0个。

这里小编就可以通过Python读取json文件将我们的测试结果统计出来了。

  1. # allure报告结果json路径,这里小编直接将路径写死了

  2. file_name = r'D:\test_daily\report\html\widgets\summary.json'

  3. with open(file_name, 'r', encoding='utf-8') as f:

  4. data = json.load(f)

  5. case_json = data['statistic']

  6. case_all = case_json['total'] # 测试用例总数

  7. case_fail = case_json['failed'] # 失败用例数量

  8. case_pass = case_json['passed'] # 成功用例数量

  9. if case_all >= 0:

  10. # 计算出来用例执行成功率

  11. case_rate = round((case_pass / case_all) * 100, 2)

  12. else:

  13. print('未获取到执行结果')

发送钉钉

测试用例和测试结果都已经都获取到了,接下来就是将我们的测试结果和报告进行汇总,然后通过钉钉机器人发送到钉钉群中,前面小编已经介绍过如何添加钉钉机器人以及如何发送消息,这里就不在介绍。

首先将生成Allure的报告的命令封装完成,后面直接进行运行。

  1. def allure_report():

  2. # 运行测试用例,

  3. os.system('pytest test03.py --alluredir ./report/result ')

  4. # 生成allure报告

  5. os.system('allure generate report/result/ -o report/html --clean')

  6. # 自动打开allure报告,固定端口号

  7. os.system('allure serve report/result -p 8210')

将Allure报告的结果获取到,和Allure的地址直接通过钉钉机器人进行发送。

  1. def send_ding():

  2. # allure报告结果json路径

  3. file_name = r'D:\test_daily\report\html\widgets\summary.json'

  4. with open(file_name, 'r', encoding='utf-8') as f:

  5. data = json.load(f)

  6. case_json = data['statistic']

  7. case_all = case_json['total'] # 测试用例总数

  8. case_fail = case_json['failed'] # 失败用例数量

  9. case_pass = case_json['passed'] # 成功用例数量

  10. if case_all >= 0:

  11. # 计算出来当前失败率

  12. case_rate = round((case_pass / case_all) * 100, 2)

  13. else:

  14. print('未获取到执行结果')

  15. # 发送报告内容

  16. text = f"用例通过率:{case_rate}%" \

  17. f"\n执行用例数:{case_all}个" \

  18. f"\n成功用例数:{case_pass}个" \

  19. f"\n失败用例数:{case_fail}个" \

  20. # 这里的路径是我本地的路径,如果项目在服务器上运行,可以更改为服务器地址

  21. f"\n测试报告地址:http://10.72.5.82:9999/index.html"

  22. data = {"msgtype":

  23. "text","text":

  24. {"content":"%s"%text},

  25. "at": {

  26. # 要@的人

  27. "atMobiles": " ",

  28. # 是否@所有人

  29. "isAtAll": False

  30. }

  31. }

  32. url = 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxx'

  33. headers = {'Content-Type': 'application/json'}

  34. r = requests.post(url,headers=headers,data=json.dumps(data))

  35. print(r.status_code)

错误分析

上述都完成了,进行运行代码执行时候,发现出现了一个问题,由于Allure报告自动打开时,服务没有关闭,导致无法继续执行下面发送钉钉的代码程序,所有这里小编进行通过加入多进程的方式来帮助我们进行运行。

下面贴上完整代码:

  1. import requests

  2. import os

  3. import json

  4. import multiprocessing

  5. import time

  6. def allure_report():

  7. # 运行测试用例,

  8. os.system('pytest test03.py --alluredir ./report/result ')

  9. # 生成allure报告

  10. os.system('allure generate report/result/ -o report/html --clean')

  11. # 自动打开allure报告

  12. os.system('allure serve report/result -p 4545')

  13. def send_ding():

  14. # allure报告结果json路径

  15. file_name = r'D:\test_daily\report\html\widgets\summary.json'

  16. with open(file_name, 'r', encoding='utf-8') as f:

  17. data = json.load(f)

  18. case_json = data['statistic']

  19. case_all = case_json['total'] # 测试用例总数

  20. case_fail = case_json['failed'] # 失败用例数量

  21. case_pass = case_json['passed'] # 成功用例数量

  22. if case_all >= 0:

  23. # 计算出来当前失败率

  24. case_rate = round((case_pass / case_all) * 100, 2)

  25. else:

  26. print('未获取到执行结果')

  27. # 发送报告内容

  28. text = f"用例通过率:{case_rate}%" \

  29. f"\n执行用例数:{case_all}个" \

  30. f"\n成功用例数:{case_pass}个" \

  31. f"\n失败用例数:{case_fail}个" \

  32. f"\n测试报告地址:http://10.72.5.82:4545/index.html"

  33. data = {"msgtype":

  34. "text","text":

  35. {"content":"%s"%text},

  36. "at": {

  37. # 要@的人

  38. "atMobiles": " ",

  39. # 是否@所有人

  40. "isAtAll": False

  41. }

  42. }

  43. url = 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxx'

  44. headers = {'Content-Type': 'application/json'}

  45. r = requests.post(url,headers=headers,data=json.dumps(data))

  46. print(r.status_code)

  47. if __name__ == '__main__':

  48. # 执行生成allure报告

  49. a = multiprocessing.Process(target=allure_report)

  50. # 执行发送钉钉机器人

  51. b = multiprocessing.Process(target=send_ding)

  52. a.start()

  53. time.sleep(5)

  54. b.start()

直接执行程序后,Allure报告自动运行打开,钉钉群中也收到了钉钉机器人的消息内容,点击群里的链接,可以直接进入到Allure的测试报告,其中这里的ip地址为本机的ip地址,端口号为生成Allure报告时设定。

 

总结

小编通过一个小的例子介绍了如何通过钉钉机器人发送测试报告以及如何统计Allure的测试结果。

当然通过钉钉机器人发送Allure报告的方法不仅仅这一种,后续小编在继续给大家介绍其他方法。感谢您的阅读,希望能给您带来帮助。

  感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐