开启左侧

接口自动化之jenkins+allure报告+企微音讯推送

[复制链接]
在线会员 GdzM 发表于 2022-12-30 15:18:35 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
正在jenkins上布置佳名目,建立胜利后,期望能够把天生的陈述,和成果统计收收至企微。
结果图
交心主动化之jenkins+allure陈述+企微消息拉收-1.png


完毕以下。
1.天生allure陈述
起首正在插件办理中,搜刮并装置allure
交心主动化之jenkins+allure陈述+企微消息拉收-2.png


其次,正在 全部东西办理中,新删树立,留神别号最佳挖当地allure的文献名
交心主动化之jenkins+allure陈述+企微消息拉收-3.png


建立后操纵 中增加allure report,挖佳成果文献路子战天生的report的路子。jenkins上树立完毕。
2.获得jenkins的allure陈述地点
启拆一个jenkins相干操纵的类,获得allure陈述的地点,url是jenkins效劳器的地点,而后username战password是用户名战暗码
  1. import jenkins
  2. from co妹妹on.Logger import logger
  3. from co妹妹on.read_yaml import ReadYaml
  4. data = ReadYaml('htinfo.yml').get_yaml_data()['jenkins']
  5. class JenkinsCo:
  6.     def __init__(self):
  7.         self.url = data['url']
  8.         self.name = data['username']
  9.         self.password = data['password']
  10.     #跟尾jenkins效劳器,需要参数jenkins登陆地址,用户名,暗码
  11.     def __get_connect(self):
  12.         try:
  13.             server=jenkins.Jenkins(url=self.url,username=self.name,
  14. password=self.password)
  15.             return server
  16.         except Exception as E:
  17.             logger.error('跟尾jenkins效劳器失利啦,失利启事{}'.format(E))
  18.             return None
  19.     #获得上一次建立任务的相干疑息
  20.     def get_info(self, projname, key):
  21.         server = self.__get_connect()
  22.         if server:
  23.             value = server.get_job_info(projname)[key]
  24.             return value
  25.         else:
  26.             return None
  27.     #拼交allure地点,获得上一次建立胜利后allure的地点
  28.     def get_allureadress(self, projname, key):
  29.         num = self.get_info( projname, key)
  30.         if num:
  31.             allure_adress = self.url + 'job/newproj/{}/allure/'.format(num - 1)
  32.             return allure_adress
  33.         else:
  34.             return None
  35. if __name__ == '__main__':
  36.     jc = JenkinsCo()
  37.     #key='nextBuildNumber',获得下一次建立的id
  38.     value = jc.get_allureadress( projname=data['projname'], key='nextBuildNumber')
  39.     print(value)
复造代码
3.阐发收拾整顿尝试的成果,用jsonreport
        装置
  1. pip install pytest-json-report --upgrade
复造代码
      失掉 用例的颠末,失利,跳过战总的用例数
  1. '''
  2. 作家:cathy
  3. 时间:2022/7/8 11:46
  4. 实质:施行统统的case
  5. '''
  6. import pytest
  7. from pytest_jsonreport.plugin import JSONReport
  8. if __name__ == '__main__':
  9.     # 需要天生成果文献,否则jenkins识别没有进去
  10.     plugin = JSONReport()
  11.     pytest.main(['-s', '--alluredir', './report/tmp'], plugins=[plugin])
  12.     su妹妹ary = plugin.report.get("su妹妹ary")
  13.     #获得颠末,失利,跳过战总施行的用例数
  14.     passed = su妹妹ary.get("passed",0)
  15.     failed = su妹妹ary.get("failed",0)
  16.     skipped = su妹妹ary.get("skipped",0)
  17.     total = su妹妹ary.get("total",0)
复造代码
4.把获得的成果战allure陈述,收拾整顿一下格局,收收给企微
企微增加小机械人,获得webhook地点,启拆一个类处置一下消息的格局
  1. '''
  2. 作家:cathy
  3. 时间:2022/1/20 19:19
  4. 实质:启拆机械人
  5. '''
  6. import datetime
  7. import  requests
  8. headers = {'Content-Type': 'application/json'}
  9. #机械人的webhook地点
  10. urlw='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxx'
  11. class Robot:
  12.     def message(self,projname, total, passed, failed, skipped,adress):
  13.         time=datetime.datetime.now()
  14.         data = {
  15.         "msgtype": "markdown",
  16.         "markdown": {
  17.                 "content":
  18.                 '''<font color="warning">提醒!主动化尝试反应\n请相干共事留神,实时跟退!</font>\n
  19.                 > 用例施行结束时间:<font color="info">{}</font>\n
  20.                 > 名目称呼:<font color="co妹妹ent">{}</font>\n
  21.                 > 用例总额:<font color="co妹妹ent">{}</font>\n
  22.                 > 颠末用例数:<font color="info">{}</font>\n
  23.                 > 失利用例数:<font color="warning">{}</font>\n
  24.                 > 跳过用例数:<font color="warning">{}</font>
  25.                 > 陈述链交:[allure陈述,请面打落后进检察]({})
  26.             '''.format( time,projname, total, passed, failed, skipped,adress)
  27.         }
  28.         }
  29.         return data
  30.     def sendMessage(self,projname,  total, passed, failed, skipped,adress):
  31.         data=self.message(projname, total, passed, failed, skipped,adress)
  32.         requests.post(url=urlw,headers=headers,json=data)
  33.         print('收消息了')
复造代码
而后正在施行统统case的文献中,挪用获得allure地点,和收收消息的办法
  1. '''
  2. 作家:cathy
  3. 时间:2022/7/8 11:46
  4. 实质:施行统统的case
  5. '''
  6. import os
  7. import sys
  8. curPath = os.path.abspath(os.path.dirname(__file__))
  9. rootPath = os.path.split(curPath)[0]
  10. sys.path.append(rootPath)
  11. sys.path.append('D:\pythonprj\co妹妹on')
  12. import pytest
  13. from pytest_jsonreport.plugin import JSONReport
  14. from co妹妹on.Robot import Robot
  15. from co妹妹on.JenkinsConnect import JenkinsCo
  16. if __name__ == '__main__':
  17.    
  18.     plugin = JSONReport()
  19. # 需要天生allure成果文献,否则jenkins识别没有进去
  20.     pytest.main(['-s', '--alluredir', './report/tmp'], plugins=[plugin])
  21.     su妹妹ary = plugin.report.get("su妹妹ary")
  22.    
  23.     passed = su妹妹ary.get("passed")
  24.    
  25.     failed = su妹妹ary.get("failed")
  26.     skipped = su妹妹ary.get("skipped")
  27.     total = su妹妹ary.get("total")
  28.     # print("同{}条,颠末{}条,失利{}条,跳过{}条".format(total, passed, failed, skipped))
  29.     jc = JenkinsCo()
  30.     rb = Robot()
  31. #获得地点
  32.     adress = jc.get_allureadress('newproj', 'nextBuildNumber')
  33. #收收企微消息
  34.     rb.sendMessage(projname='operatePro', total=total, passed=passed, failed=failed, skipped=skipped, adress=adress)
复造代码
您需要登录后才可以回帖 登录 | 立即注册 qq_login

本版积分规则

发布主题
阅读排行更多+
用专业创造成效
400-778-7781
周一至周五 9:00-18:00
意见反馈:server@mailiao.group
紧急联系:181-67184787
ftqrcode

扫一扫关注我们

Powered by 职贝云数A新零售门户 X3.5© 2004-2025 职贝云数 Inc.( 蜀ICP备2024104722号 )