1. 前言
上一篇文章介绍了两种 allure 的特性
- @allure.step() 装饰器:可以设置测试步骤,让测试用例的执行过程更加详细
- allure.attach() 函数:可以设置需要显示在 allure 报告的附件,包含了多种类型,可以通过 allure.attachment_type 查看支持的类型
这一篇幅,我们主要来讲解另外两个特性,可以增加报告的可读性哦!
- @allure.description()
- @allure.title()
它们用法极其相近,只是作用不一样而已
2. @allure.description()
2.1 作用
可以添加足够详细的测试用例描述,以便于管理层查看哦哈哈哈
2.2 语法格式,有三种
@allure.description(str)- 在测试用例函数声明下方添加
""" """ @allure.description_html(str):相当于传一个HTML代码组成的字符串,类似 allure.attach() 中传HTML
注意:方式一方式二的效果和作用是一致的, 哪个方便哪个来
#!/usr/bin/env python# -*- coding: utf-8 -*-"""__title__ =__Time__ = 2020-04-18 15:24__Author__ = 小菠萝测试笔记__Blog__ = https://www.cnblogs.com/poloyy/"""import allureimport allure# 方式一@allure.description("""这是一个@allure.description装饰器没有特别的用处""")def test_description_from_decorator():assert 42 == int(6 * 7)# 方式二def test_unicode_in_docstring_description():"""当然,在方法声明的下一行这样子写,也算一种添加description的方式哦"""assert 42 == int(6 * 7)# 方式三@allure.description_html("""<h1>Test with some complicated html description</h1><table style="width:100%"><tr><th>Firstname</th><th>Lastname</th></tr><tr align="center"><td>William</td><td>Smith</td></table>""")def test_html_description():assert True
2.3 方式一的 allure 报告

2.4 方式二的 allure 报告

2.5 方式三的 allure 报告

3. @allure.title()
3.1 作用
- 使得测试用例的标题更具有可读性,毕竟我们可以写成中文
- 支持占位符传递关键字参数哦(动态标题,结合 @pytest.mark.parametrize 使用)
3.2 具体栗子一
#!/usr/bin/env python# -*- coding: utf-8 -*-"""__title__ =__Time__ = 2020-04-18 16:09__Author__ = 小菠萝测试笔记__Blog__ = https://www.cnblogs.com/poloyy/"""import pytest, allure@allure.title("前置操作:登录")@pytest.fixturedef test_loginss(request):params = request.paramname = params["username"]pwd = params["pwd"]allure.attach(f"这是测试用例传的参数{params}")print(name, pwd, params)yield name, pwd@allure.title("成功登录,测试数据是:{test_loginss}")@pytest.mark.parametrize("test_loginss", [{"username": "name1", "pwd": "pwd1"},{"username": "name2", "pwd": "pwd2"}], indirect=True)def test_success_login(test_loginss):name, pwd = test_loginssallure.attach(f"账号{name},密码{pwd}")
3.3 运行结果,查看 allure 报告
这是一次综合多个之前学到的方法来完成的栗子,已经具体标出来啦!
3.4 具体栗子二
@allure.title("多个参数{name},{phone},{age}")@pytest.mark.parametrize("name,phone,age", [(1, 2, 3),(4, 5, 6),(7, 8, 9)])def test_test_test(name, phone, age):print(name, phone, age)
3.5 运行结果,查看allure报告

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