Pytest-结合Allure生成美观的报告

Allure是一款开源的工具,可以用图形化的方式展示测试结果

Allure的亮点有:

  • 生成美观的图形化报告,清晰地展示测试结果和覆盖率。
  • 支持多种测试框架,比如Pytest、JUnit、TestNG等。
  • 还可以与CI/CD工具集成,生成容易分享的报告。

接下来,我们会看看如何安装Allure并和Pytest结合使用,一步步生成这些漂亮的报告。

1. 安装Allure及所需依赖

首先,我们需要安装allure-pytest插件以及Allure本身。

安装Allure

  • 安装allure-pytest插件

直接用pip安装插件:

1
pip install allure-pytest
  • 安装Allure命令行工具

Allure的命令行工具可以通过好几种方式安装,比如用brew
(适用于macOS用户)或者从Allure的GitHub Releases页面下载安装包。

对于macOS用户,可以直接用Homebrew安装:

1
brew install allure

Windows和Linux用户可以下载压缩包,然后把allure可执行文件加入到环境变量中,这样命令行就可以找到它。

2. 结合Pytest生成Allure报告

安装完后,我们就可以使用allure-pytest插件来生成测试报告了。

使用Allure注解让报告更生动

为了让报告更有可读性,我们可以用一些Allure提供的注解来标记测试代码。以下是一些常用的注解:

  • @allure.step:用来描述测试步骤。
  • @allure.severity:用来定义测试用例的重要性。

比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import pytest
import allure

@allure.feature("用户登录")
@allure.story("正确的用户名和密码")
@allure.severity(allure.severity_level.CRITICAL)
def test_login_success():
with allure.step("输入用户名"):
username = "test_user"
assert username == "test_user"
with allure.step("输入密码"):
password = "secret"
assert password == "secret"
with allure.step("点击登录按钮"):
result = True
assert result is True

在这个例子中,我们用了@allure.feature@allure.story来描述测试的功能模块和用户场景。用with allure.step()
记录测试步骤,这样报告中会看到每一步的详细信息,使得报告更加生动和可读。

运行测试并生成报告数据

运行测试时,需要指定生成报告的目录,命令如下:

1
pytest --alluredir=./allure-results

--alluredir参数指定了输出报告数据的目录,Pytest会将所有测试结果以JSON格式输出到该目录中。

3. 生成HTML格式的Allure报告

生成数据后,我们可以用Allure命令行工具把测试结果转换为HTML格式:

1
allure serve ./allure-results

运行这个命令后,Allure会启动一个本地服务器并自动打开浏览器展示报告。allure serve命令可以快速生成HTML格式的报告,让我们轻松查看测试结果。

报告里会包含测试执行的详细信息,比如通过、失败、跳过的用例情况,还包括每个测试用例的具体步骤、执行时间、截图等。

4. 常用的Allure注解及效果

为了充分利用Allure,我们可以在测试中使用一些注解来增强报告的表现力。以下是一些常见注解及它们在报告中的效果:

  • @allure.feature:用于定义测试的功能模块,让测试报告按功能归类,方便查找。
  • @allure.story:描述某个功能模块中的具体用户场景或故事情节。
  • @allure.severity:用来定义测试用例的重要程度,有BLOCKERCRITICALNORMALMINORTRIVIAL
    几个等级。这些等级会在报告中直观地显示出来,帮助我们评估问题的严重性。
  • @allure.step:将某段代码标记为一个步骤,每一个步骤都会在报告中详细显示,便于理解测试的具体过程。
  • @allure.attachment:可以在报告中添加附件,比如文本、图片、日志等,帮助进一步分析问题。

例如,添加截图:

1
2
3
4
5
6
7
8
@allure.attachment("页面截图", attachment_type=allure.attachment_type.PNG)
def attach_screenshot():
with open("screenshot.png", "rb") as image:
return image.read()

def test_with_screenshot():
attach_screenshot()
assert True

这样,我们可以把页面截图或其他文件直接嵌入到测试报告中,方便分析测试失败的原因。

5. Allure的命令行参数

Allure命令行工具有一些常用的命令行参数可以帮我们更好地生成和查看报告:

  • allure serve <directory>:启动一个本地服务器来展示测试报告。
  • allure generate <directory> -o <output directory>:生成HTML格式的测试报告,并把它保存到指定目录中。
  • allure open <directory>:直接打开已经生成的HTML报告。

这些命令行工具让我们在本地生成和展示报告变得非常方便。特别是allure serve,非常适合在开发过程中快速查看测试结果。

6. 集成Allure到CI/CD流程

Allure报告可以方便地集成到CI/CD工具中,比如Jenkins、GitLab CI等。在CI/CD中集成Allure,可以让测试报告自动生成并附加到每次构建中,方便团队成员随时查看测试结果。

例如在Jenkins中:

  1. 安装Allure Jenkins Plugin。
  2. 在构建完成后添加Allure Report的生成步骤,指定测试结果的路径(如allure-results)。

这样,每次构建后,Jenkins都会自动生成并展示Allure报告,非常适合团队协作。

7. Allure最佳实践

  • 合理使用注解:使用@allure.feature@allure.story等注解,让测试报告更加结构化、层次分明。
  • 添加关键步骤和附件:对重要的测试步骤用@allure.step标记,并在出错的地方添加截图等附件,这样可以帮助更快地找到问题。
  • 结合参数化测试:通过结合Pytest的参数化功能,减少重复代码,并让报告更加全面。