Pytest集成Allure生成测试报告「Jenkins+Allure插件方案」

770 阅读3分钟

接上文,我们说到我们有两个方案:

  • Allure服务器管理方案
  • Jenkins-Allure插件方案

本文中,以Jenkins+Allure插件方案,若有需求去看Allure服务器管理方案,可自行去本人其他文章中翻,感谢~

背景

抛出问题:

  • 跑完自动化生成的Allure测试报告是如何管理的?
  • 我的Allure测试报告怎么只能本地展示啊?
  • 别人怎么访问我的Allure测试报告链接?
  • 我的测试用例中有截屏怎么在Allure报告展示?

环境要求

  • Jenkins
  • Python
  • JDK

Jenkins配置

安装插件

  1. 登录到 Jenkins 服务器。
  2. 导航到 管理 Jenkins > 管理插件
  3. 可用 标签页中,搜索 “Allure Jenkins Plugin”。
  4. 选择插件后点击 安装后重启image.png

在构建项目中使用 Allure

  1. 打开你的 Jenkins 项目,点击 配置
  2. 在构建环境设置中,找到 增加构建后操作,选择 Allure Report
  3. 配置 Allure 报告的生成,包括结果目录和报告目录。
  4. 保存。 image.png

代码配合

在上面我们已经添加好Allure的构建后操作,但是配置毕竟是配置,还是需要和我们的代码相匹配上的,因此在这里我们确认一下我们的代码是否与jenkins配置所匹配。

  • 我的config配置文件,我是将这些路径配置写在配置文件中
# 项目根目录  
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# allure报告目录  
REPORT_FILES = BASE_DIR + '/report'
  • 代码调用,带上--alluredir参数并将allure生成的报告存放在此目录中,与jenkins形成匹配关系
args = [f"--alluredir={config.REPORT_FILES}/json/", f"--clean-alluredir",]   
pytest.main(args)

运行结果

在上述Jenkins和代码我们都配置完毕之后,运行结束之后,在Jenkins运行结果之后就会出现一个构建后置操作的Allure Report的图标,点进去就可以看到allure样式的测试报告,如图:

image.png 点进去就可以看到完整的Allure测试报告了

自动化代码

在最后,我们可以想尽办法去优化最后一波。比如:能不能让自动化报告运行结束之后,做个简单汇总输出测试通过率,并且把测试报告的链接附带上,毕竟没有人会闲着没事一天到晚蹲在Jenkins面前,开搞!

Jenkins-Allure报告的链接逻辑

在这里我们观察到Allure报告的链接地址,无非就是 https://{IP}:{端口}/job/{job名称}/{构建number}/allure这个样式组成的,如图 image.png

那我们在代码里就这样写:

def get_jenkins_info():  
    jenkins_info = argparse.Namespace(  
    job_name=os.getenv('JOB_NAME', 'DefaultJobName'),  
    build_number=os.getenv('BUILD_NUMBER', '0'),  
    build_url=os.getenv('BUILD_URL', 'http://defaulturl/'),  
    node_name=os.getenv('NODE_NAME', 'DefaultNode'),  
    workspace=os.getenv('WORKSPACE', '/default/workspace'),  
    build_user=os.getenv('BUILD_USER_ID', 'NA')  
    )  

    # 日志记录环境信息  
    logger.info(f"{jenkins_info}")  

    return jenkins_info
    
jenkins_info = get_jenkins_info()

report_url = f"{config.JENKINS_WORK}/{jenkins_info.job_name}/{jenkins_info.build_number}/allure/"

如此,就可以将allure的测试报告链接输出出来了,至于文章上述的常量就懒得贴了,自行补全。至此,大功告成!

结语

通过 Jenkins 的 Allure 插件,我们不仅能自动化生成详细的测试报告,还能将这些报告整合入我们的 CI/CD 流程中,从而提高软件质量和开发效率。