问题一:使用allure生成测试报告报错:AttributeError: ‘str’ object has no attribute ‘isascii’
出现:同样的脚本使用 pytest 的--html=report/report.html时没有报错,但当我把配置改成--alluredir ./report后,就报属性错误,提示没有isascii这个属性。isascii是 ASCII 码相关的判断方法,可以确定是解码问题。
原因:我的 Python 版本是 3.6,而代码尝试调用了 Python 3.7+ 才引入的str.isascii()方法,因此报错。深层原因是:pytest-allure 在收集测试节点内容时,需要处理包含中文的内容,而isascii()是 Python 3.7 中用于对字符串进行解码判断的方法,Python 3.6 中还没有这个方法。
解决方法:
方法一:升级 Python 版本。下载新版 Python 安装即可,同时还需配置环境变量。
方法二:将 pytest 版本降级到与 Python 3.6 兼容的版本:pip install "pytest<7.0" -U。可能还需配合 allure-pytest 版本一起降级,同时 allure 也需要与 allure-pytest 版本相容,所以可能引起连锁反应。
问题二:使用allure生成测试报告,没有趋势怎么办-三步解决。
问题:allure生成的测试报告TREND趋势中没有数据。
1、正常执行pytest,且通过generate生成html报告。打开index.html报告TREND趋势总没有数据。
原因:Allure 本身不是数据库,它不会自动记录历史。所以需要自己手动复制历史数据然后重新生成带有趋势的报告。
第一步:执行后生成原始数据
1、新增文件夹:allure-results
2、修改配置文件:–alluredir ./allure-results
3、执行pytest,生成json文件
**第二步:复制report中的历史数据到allure-results,历史数据中含有以前执行的测试结果。
- 使用命令将history中的文件都复制到新文件夹中
xcopy /E /I .\report\html\history .\allure-results\history- xcopy 是 Windows 专为“复制文件夹(目录)
- /E:复制所有子文件夹,包括空文件夹
- /I:如果目标文件夹(.\allure-results\history)不存在,/I 会直接告诉系统“这是一个文件夹,请自动创建”,不会弹窗问你是文件还是目录。如果没有 /I,CMD 会卡住让你手动输入 D(目录)或 F(文件)
- 将历史数据和新数据一起生成报告:
allure generate ./allure-results -o ./allure-report --clean- 新文件夹allure-results中的json文件和历史数据一起生成新的报告,将他放到新的报告文件夹allure-report。
结果-带有趋势的html报告
- 新文件夹allure-results中的json文件和历史数据一起生成新的报告,将他放到新的报告文件夹allure-report。