其他测试框架 【求助】unittest 报告不能正常显示 +jenkins 为啥不能识别图片

醋精测试媛 · 2021年01月20日 · 最后由 醋精测试媛 回复于 2021年01月22日 · 3480 次阅读

将一个 selenium 自动化测试项目在本地运行,全部成功。

将其部署到 Jenkins 上,其中上传图片的所有用例全部失败了

Jenkins 无法识别图片吗?该怎么解决?
现在的暂时解决方案是:不在 jenkins 的 workspace 运行了,但是下面报告的问题仍未解决

补充报告的问题:
无法呈现正常的报告:

使用的方法是:

# 一、加载器实例化
loader = unittest.TestLoader()
# 二、套件实例化
suite = unittest.TestSuite()
# 三、将收集到的用例,放到测试套件当中。
suite.addTests(loader.loadTestsFromTestCase(TestLogin))

# 四 运行并生成报告
    try:
        runner = unittestreport.TestRunner(suite=suite,
                                           filename="HTMLReport_1.html",
                                           report_dir=html_report_dir,
                                           title='Report 1',
                                           tester='lishengjiao',
                                           desc="报告1",
                                           templates=2)
        # 五、运行测试套件,设置重跑策略
        runner.rerun_run(count=1)
    finally:
        """浏览器退出"""
        chrome_driver.quit()

suite.addTests(loader.loadTestsFromTestCase(TestLogin))刚开始添加了几行 Test 类时,报告没问题,当慢慢的增多,报告就变成了上图的样子。

这是为什么呢?有什么别的办法避开或者解决这个问题嘛

共收到 13 条回复 时间 点赞

https://testerhome.com/topics/10372和这个情况相同!!!

F12 调试,大概率是文件路径问题

剪烛 回复

绝对不是,因为能找到这个文件,而且 pycharm 上运行没问题。
日志如下:


我直接复制这个文件路径,在电脑文件资源管理器中能找到。

上传照片指什么。截图到指定路径?你先试试绝对路径

jenkins 执行,相对路径指的是基于这个 job 空间的路径,与 pycharm 运行的相对路径不一样

pangxie 回复

job 空间,即 workspace,我打印出来的路径确实是这个空间的,而且是项目下文件夹 a 的子文件夹 b 中的,应该是能找到的呀。

我使用的方法是先利用 os 获取当前项目路径,用 os.path.join 将当前项目路径和图片的路径连在一起,而且输出在日志中的路径确实是对的。

落雨 回复

应该就是绝对路径,代码如下:

# 当前文件路径
current_path = os.path.abspath(__file__)

# 框架项目顶层目录
base_dir = os.path.split(os.path.split(current_path)[0])[0]

# 上传图片目录
image_dir = os.path.join(base_dir, r"uploads\images")

如果照片确实写入了文件夹。你在报告里看不到照片。你可以看看报告的照片路径指向。

落雨 回复

报告里面不仅是照片。好像什么内容都没有,就是一份默认的报告, 但是我其他的测试和这个写的一摸一样,不知道为什么这个报告没有导入内容?

PS:报告中图片是 base64 的,无路径指向

感觉可能报告生成上的问题

落雨 回复

我补充了一些代码在问题里,可否看看是否是我代码哪里不符合规范或者哪里有潜在的坑?

我意思是,你网页 F12 看下,从网页端开始找,看下 console 里,出错的资源是访问的哪个路径,你把路径拷贝出来,放在浏览器访问看看,在对照实际的文件路径,有哪里不对。我不知道在 jenkins 里边是怎么执行的,但是你得确定下 jenkins 开网页服务的静态路径是对的吗?

剪烛 回复

谢谢!已发现问题!

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册