zoukankan      html  css  js  c++  java
  • Pytest系列(23)- allure打标记,@allure.feature()、@allure.story()、@allure.severity()的详细使用

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

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

    前言

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

    allure的标记装饰器

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

    BDD标记装饰器

    提供了两个装饰器

    • @allure.feature

    • @allure.story 

    直接上代码栗子

    #!/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')
    def test_with_epic_1():
        pass
    
    
    @allure.story('story_1')
    def test_with_story_1():
        pass
    
    
    @allure.story('story_2')
    def test_with_story_2():
        pass
    
    
    @allure.feature('feature_2')
    @allure.story('story_2')
    def 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栏目下,测试用例都不会分类显示,当用例多的时候可能看的花里胡哨

    总结

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

    问题来了,用命令行方式运行时,可以指定运行某个story或者feature吗?

    答案是:当然可以!!跟@pytest.mark.xxx没啥区别哦!!

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

    譬如

     pytest tests.py --allure-stories story_1,story_2
    pytest tests.py --allure-features feature2 --allure-stories story2

    @ allure.severity

    作用:按严重性(优先级)来标记测试用例,它使用allure.severity_level枚举值作为参数

    先看看枚举类有哪些常量

    严重程度最高blocker,最低trivial

    class Severity(str, Enum):
        BLOCKER = 'blocker'
        CRITICAL = 'critical'
        NORMAL = 'normal'
        MINOR = 'minor'
        TRIVIAL = 'trivial'

    看看代码栗子

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    """
    __title__  =
    __Time__   = 2020-04-19 14:50
    __Author__ = 小菠萝测试笔记
    __Blog__   = https://www.cnblogs.com/poloyy/
    """
    
    import allure
    
    
    def test_with_no_severity_label():
        pass
    
    
    @allure.severity(allure.severity_level.TRIVIAL)
    def test_with_trivial_severity():
        pass
    
    
    @allure.severity(allure.severity_level.NORMAL)
    def test_with_normal_severity():
        pass
    
    
    @allure.severity(allure.severity_level.NORMAL)
    class TestClassWithNormalSeverity(object):
    
        def test_inside_the_normal_severity_test_class(self):
            pass
    
        @allure.severity(allure.severity_level.CRITICAL)
        def test_inside_the_normal_severity_test_class_with_overriding_critical_severity(self):
            pass

    运行结果,查看allure报告

    其实就是测试用例多了个优先级severity属性而已...

    命令行方式

    也可以通过命令行参数运行指定severity的测试用例哦

    pytest tests.py --allure-severities normal,critical
  • 相关阅读:
    WPF开发进阶
    WPF开发进阶
    java 架构好文章
    Logback 输出 JPA SQL日志 到文件
    Linux Bash Shell j简单入门
    java内存空间简述
    PowerDesigner 16.5 反向PostgreSQL9.01 中 Unable to list the columns. SQLSTATE = 22003不良的类型值 short : t 解决方法
    Java代码自动部署
    Oracle优化技巧
    string类型与ASCII byte[]转换
  • 原文地址:https://www.cnblogs.com/poloyy/p/12725509.html
Copyright © 2011-2022 走看看