Pytest系列23- allure 打标记之 @allure.epic()、@allure.feature()、@allure.story() 的详细使用

如果你还想从头学起Pytest,可以看看这个系列的文章哦!

https://www.cnblogs.com/poloyy/category/1690628.html

 

前言

  • 前面几篇文章主要介绍了allure的特性,这篇文章我们就来讲下allure的标记用法
  • 有时候我们写pytest的时候,会用到 @pytest.mark 但并不会显示在allure报告上
  • 而allure也提供了三种类型的标记装饰器,它们是可以显示在allure报告上的

 

allure的标记装饰器

  • BDD样式的标记装饰器
  • 优先级(严重程度)标记装饰器
  • 自定义标记装饰器

 

BDD标记装饰器

提供了三个装饰器

  • @allure.epic:敏捷里面的概念,定义史诗,往下是 feature
  • @allure.feature:功能点的描述,理解成模块往下是 story
  • @allure.story:故事,往下是 title

 

栗子一(story+feature)

测试代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
__title__  =
__Time__   = 2020-04-19 14:27
__Author__ = 小菠萝测试笔记
__Blog__   = https://www.cnblogs.com/poloyy/
"""

import allure


def test_without_any_annotations_that_wont_be_executed():
    pass


@allure.story('epic_1')
 test_with_epic_1():
    story_1 test_with_story_1():
    story_2 test_with_story_2():
    


@allure.feature(feature_2)
@allure.story( test_with_story_2_and_feature_2():
    pass

 

无标记装饰器

我们先看看没有设置标记装饰器时,allure报告是咋样的

 

 

添加装饰器

加了 @allure.feature 和 @allure.story 之后的 allure 报告

 

知识点

  • story 是 feature 的子集,当测试用例有 @allure.feature、@allure.story 时,在报告上会先显示 feature,点开之后再显示 story【可以想象成,安徒生童话(feature)有很多个童话故事(story)】
  • 如果不加 @allure.feature、@allure.story 时,在Behaviors栏目下,测试用例都不会分类显示,当用例多的时候可能看的花里胡哨

 

栗子二

前言

这里应用了包括前面所讲的全部装饰器

 

测试代码


__title__  = 
__Time__   = 2020/10/27 19:44
__Author__ = 小菠萝测试笔记
__Blog__   = https://www.cnblogs.com/poloyy/
"""
 os

 allure
 pytest


@pytest.fixture(scope="session" login_fixture():
    print(=== 前置登录 ===)


@allure.step(步骤1 step_1():
    操作步骤---------------1步骤2 step_2():
    操作步骤---------------2步骤3 step_3():
    操作步骤---------------3)


@allure.epic(epic 相当于总体描述)
@allure.feature(测试模块class TestAllureALL:

    @allure.testcase(https://www.cnblogs.com/poloyy/",测试用例,点我一下)
    @allure.issue(https://www.cnblogs.com/poloyy/p/12219145.htmlBug 链接,1)">)
    @allure.title(用例的标题)
    @allure.story(story one)
    @allure.severity(critical)
     test_case_1(self,login_fixture):
        
        小菠萝测试笔记地址:https://www.cnblogs.com/poloyy/
        """
        测试用例1)
        step_1()
        step_2()

    @allure.story(story two test_case_2(self,login_fixture):
        测试用例2)
        step_1()
        step_3()


@allure.epic(另一个 epic查找模块 TestAllureALL2:
    @allure.story(story three test_case_3(self,1)">测试用例3)
        step_1()

    @allure.story(story four test_case_4(self,1)">测试用例4)
        step_3()


if __name__ == __main__:
    pytest.main([-s',1)">-q--alluredir./allure])
    os.system(allure -c ./allure)
    os.system(allure serve ./allure-report')

 

allure 报告

 

总结

倘若是用 pytest+allure 写项目,又想用 @pytest.mark.xxx 来给不同的用例添加标记的话,可以尝试用 @allure.feature、@allure.story 替换,毕竟可以显示在报告上

 

提出问题

用命令行方式运行时,可以指定运行某个story、feature、epic吗?

 

自问自答

当然可以,跟 @pytest.mark.xxx 指定标签运行的方式没啥区别,添加下面的命令行参数就行

  • --allure-epics
  • --allure-features
  • --allure-stories

 

举栗子

 只运行 epic 名为 test 的测试用例
pytest --alluredir ./report/allure --allure-epics=test

 只运行 feature 名为 模块 的测试用例
pytest --alluredir ./report/allure --allure-features=模块

 只运行 story1、story2 的测试用例(也可以不用=号 空格就行了哦)
pytest tests.py --allure-stories story1,story2

 指定 feature+story
pytest tests.py --allure-features feature2 --allure-stories story2

 

相关文章

目录1、前言2、mark的使用(一)注册自定义标记(二)在测试...
用例执行状态用例执行完成后,每条用例都有自己的状态,常见...
什么是conftest.py可以理解成一个专门存放fixture的配置文件...
前言pytest默认执行用例是根据项目下的文件名称按ascii码去收...
前言:什么是元数据?元数据是关于数据的描述,存储着关于数...