1. 前言

上一篇文章介绍了两种 allure 的特性

  • @allure.step() 装饰器:可以设置测试步骤,让测试用例的执行过程更加详细
  • allure.attach() 函数:可以设置需要显示在 allure 报告的附件,包含了多种类型,可以通过 allure.attachment_type 查看支持的类型

这一篇幅,我们主要来讲解另外两个特性,可以增加报告的可读性哦!

  • @allure.description()
  • @allure.title()

它们用法极其相近,只是作用不一样而已

2. @allure.description()

2.1 作用

可以添加足够详细的测试用例描述,以便于管理层查看哦哈哈哈

2.2 语法格式,有三种

  1. @allure.description(str)
  2. 在测试用例函数声明下方添加 """ """
  3. @allure.description_html(str):相当于传一个HTML代码组成的字符串,类似 allure.attach() 中传HTML

注意:方式一方式二的效果和作用是一致的, 哪个方便哪个来

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. __title__ =
  5. __Time__ = 2020-04-18 15:24
  6. __Author__ = 小菠萝测试笔记
  7. __Blog__ = https://www.cnblogs.com/poloyy/
  8. """
  9. import allure
  10. import allure
  11. # 方式一
  12. @allure.description("""
  13. 这是一个@allure.description装饰器
  14. 没有特别的用处
  15. """)
  16. def test_description_from_decorator():
  17. assert 42 == int(6 * 7)
  18. # 方式二
  19. def test_unicode_in_docstring_description():
  20. """
  21. 当然,在方法声明的下一行这样子写,也算一种添加description的方式哦
  22. """
  23. assert 42 == int(6 * 7)
  24. # 方式三
  25. @allure.description_html("""
  26. <h1>Test with some complicated html description</h1>
  27. <table style="width:100%">
  28. <tr>
  29. <th>Firstname</th>
  30. <th>Lastname</th>
  31. </tr>
  32. <tr align="center">
  33. <td>William</td>
  34. <td>Smith</td>
  35. </table>
  36. """)
  37. def test_html_description():
  38. assert True

2.3 方式一的 allure 报告

image.png

2.4 方式二的 allure 报告

image.png

2.5 方式三的 allure 报告

image.png

3. @allure.title()

3.1 作用

  • 使得测试用例的标题更具有可读性,毕竟我们可以写成中文
  • 支持占位符传递关键字参数哦(动态标题,结合 @pytest.mark.parametrize 使用)

3.2 具体栗子一

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. __title__ =
  5. __Time__ = 2020-04-18 16:09
  6. __Author__ = 小菠萝测试笔记
  7. __Blog__ = https://www.cnblogs.com/poloyy/
  8. """
  9. import pytest, allure
  10. @allure.title("前置操作:登录")
  11. @pytest.fixture
  12. def test_loginss(request):
  13. params = request.param
  14. name = params["username"]
  15. pwd = params["pwd"]
  16. allure.attach(f"这是测试用例传的参数{params}")
  17. print(name, pwd, params)
  18. yield name, pwd
  19. @allure.title("成功登录,测试数据是:{test_loginss}")
  20. @pytest.mark.parametrize("test_loginss", [
  21. {"username": "name1", "pwd": "pwd1"},
  22. {"username": "name2", "pwd": "pwd2"}], indirect=True)
  23. def test_success_login(test_loginss):
  24. name, pwd = test_loginss
  25. allure.attach(f"账号{name},密码{pwd}")

3.3 运行结果,查看 allure 报告

这是一次综合多个之前学到的方法来完成的栗子,已经具体标出来啦!
image.png

3.4 具体栗子二

  1. @allure.title("多个参数{name},{phone},{age}")
  2. @pytest.mark.parametrize("name,phone,age", [
  3. (1, 2, 3),
  4. (4, 5, 6),
  5. (7, 8, 9)
  6. ])
  7. def test_test_test(name, phone, age):
  8. print(name, phone, age)

3.5 运行结果,查看allure报告

image.png

4. 总结

如果没有添加 @allure.title() 的话,测试用例的标题默认就是函数名,这样的可读性不高,毕竟咱们是中国人,显示中文 title 还是很有必要的~所以墙裂建议大伙儿加上啦!