Python自动化一------pytes与allure结合生成测试报告

一、 需求引入

最近在搞接口自动化,用python实现的,用例写完了,执行也没啥问题,但测试结果查看,还有测试执行信息查看不方便,所以就需要生成一下测试报告。

二、 方案选择

最初方案是有两个:

  1. unittest + htmlrunner
  2. pytest + allure

考虑到pytest的功能相比unittest更为强大,且其生态目前已经非常活跃和丰富,allure生成的测试报告也比htmlrunner更加炫丽,我最终选择方案2.

三、 实现步骤

步骤一:安装 Allure

确保您已安装 allure-pytest 插件。在命令行中运行以下命令进行安装:

复制代码
pip install allure-pytest

步骤二:编写测试代码示例

在测试代码中,可以使用 allure 提供的装饰器和上下文管理器来添加额外的测试信息,如标签、附件、步骤等。例如:

python 复制代码
import pytest

from allure_commons.types import AttachmentType



@pytest.mark.parametrize("a, b", [(1, 2), (3, 4)])

def test_addition(a, b):

assert a + b == 3 # 示例断言,实际应替换为有意义的测试逻辑


with allure.step("Performing addition"):

result = a + b


allure.attach(

f"{a} + {b} = {result}",

attachment_type=AttachmentType.TEXT,

)

步骤三:运行测试并生成临时 Allure 数据

在命令行中,运行带有 --alluredir 参数的 pytest 命令,指定 Allure 数据文件存放的目录:

复制代码
pytest --alluredir=allure_results

这将执行测试并生成 Allure 数据文件到指定的 allure_results 目录。

代码执行:

python 复制代码
pytest_args = ["--alluredir", allure_dir, test_dir]

pytest.main(pytest_args)

如果是多次执行的话,其实可以动态生成一个目录,用以区分多个测试执行结果,如以每次执行的而测试计划名称,或者时间戳。

步骤四:生成 Allure 报告

安装 allure-commandline 工具以生成报告:

复制代码
pip install allure-commandline

然后,使用 allure generate 命令生成报告:

复制代码
allure generate allure_results --clean -o allure_report

这将基于 allure_results 目录中的数据生成 HTML 报告,并存储在 allure_report 目录中。

步骤五:查看报告

打开 allure_report 目录中的 index.html 文件,即可在浏览器中查看生成的 Allure 测试报告。

如果上一步执行了allure generate指令生成了测试报告,则执行以下指令:

复制代码
allure open -h {test_report_host} -p {test_report_port} {test_report_dir}

若上一步未执行allure generate指令生成测试报告,则执行以下指令:

复制代码
allure serve -h {test_report_host} -p {test_report_port} {test_report_dir}

如果需要将报告部署到服务器或与团队共享,可以将 allure_report 目录打包或上传到合适的位置。如果您使用 CI/CD 工具(如 Jenkins、GitLab CI/CD、GitHub Actions 等),可以配置相应的 Allure 插件或步骤来自动化测试执行、报告生成和部署过程。

问题总结

1. 是否需要本地安装allure程序

在之前,我也尝试过pytest与allure结合生成测试报告,那会儿看的参考文献是说要安装,于是我也照做了,最后也确实能正常生成报告。

但是吧,这次我查了下相关文档,好像也没提到一定要本地安装allure。于是我实际测试了一下,只要安装了pytest-allure库,确实一切功能都可以正常使用。(前提是已经安装了allure-commandline

so,本地安装allure程序步骤可以直接省略了。

2. 安装allure-commandline失败

我使用3.x版本的python安装allure-commandline时报错找不到这个库。 切换pypi源,升级pip等等所有步骤都尝试过后,还是不行。 我又查了下相关资料,好像可能是因为python版本太高了,没有对应版本的allure-commandline库。 解决方案: 自己去github下载allure2,然后在本地解压缩,建议解压缩至项目路径下,这样可以根据项目中的相对路径调用allure指令,否则就需要配置环境变量allure安装目录\bin

3. 用allure.step装饰测试用例类的setup_class(self)报错

我之前在考虑怎么增加setup步骤的说明信息,搜到一篇文章说可以用allure.step装饰。我试了一下,结果报错 setup_class() missing 1 required positional argument: 'self'

问题很明显,就是setup_class()有一个self参数,而step不接受这个参数。

所以最终解决办法就是不用allure.step装饰测试用例类的setup_class(self)方法,改为使用日志记录相关信息。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取**【保证100%免费】**

​​​软件测试面试文档

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

相关推荐
新新学长搞科研1 天前
第五届电子、集成电路与通信技术国际学术会议(EICCT 2026)
运维·人工智能·自动化·集成测试·信号处理·集成学习·电气自动化
ricky_fan1 天前
(OpenAI)Codex 安装、部署使用方式
python·macos·conda·vim
重庆小透明1 天前
【面试问题】java字节八股部分
java·面试·职场和发展
小王不爱笑1321 天前
Java 对象拷贝(浅拷贝 / 深拷贝)
java·开发语言·python
Flittly1 天前
【从零手写 ClaudeCode:learn-claude-code 项目实战笔记】(9)Agent Teams (智能体团队)
python·agent
阿达_优阅达1 天前
告别手工对账:xSuite 如何帮助 SAP 企业实现财务全流程自动化?
服务器·数据库·人工智能·自动化·sap·企业数字化转型·xsuite
ℳ๓₯㎕.空城旧梦1 天前
C++中的解释器模式
开发语言·c++·算法
x_xbx1 天前
LeetCode:2. 两数相加
算法·leetcode·职场和发展
DevnullCoffe1 天前
Open Claw × 跨境电商:5个最有价值的 AI Agent 应用场景深度拆解
python·api
JdayStudy1 天前
SIR 网络传播仿真软件说明书
开发语言·网络·php