zoukankan      html  css  js  c++  java
  • Pytest之自定义mark

     

     

    一个完整的项目,测试用例比较多,比如我们想将某些用例用来做冒烟测试,那该怎么办呢?pytest中可以自定义配置文件,用例按照指定的方式去运行。

     

     

    配置文件

     

    1 定义配置文件名

     

    在项目根目录下,创建一个文件:pytest.ini (固定名称,不要修改)。

     

     

    2 配置文件格式

    pytest.ini 

    [pytest]
    markers =
        demo: just for demo
        smoke

     

    ① 案例一:

    之前在讲解用例被标记为@pytest.mark.xfail时,如果用例运行通过,显示XPASS。

    test_demo.py

    @pytest.mark.xfail()
    def test_demo02():
        print("这是test_demo02")
        assert 1 == 1

     

    在配置文件中未配置xfail_strict = True时,运行结果如下:

    image

     

    在pytest.ini 中加上xfail_strict = True配置后

    运行结果为:

    image.png

    image.png

    image.png

    addopts参数可以更改默认命令行选项,省去手动敲命令行参数。

    比如命令行想输出详细信息、分布式执行或最大失败次数,每次敲命令很麻烦,在配置里设置,以后命令直接输入pytest即可。

    现有如下用例:

    test_demo.py

    def test_demo01():
        print("这是test_demo01")
        assert 1 == 2
    def test_demo02():
        print("这是test_demo02")

     

    如果需要输出信息更详细、输出调试信息及用例执行错误时立即退出,那么配置如下:

    [pytest]
    markers =
        demo: just for demo
        smoke
    addopts = -v -s -x

     

    命令行输入:pytest

    输出结果为:

    image.png

     

     

     

    测试用例执行实战

     

    比如我想从众多用例中挑选出部分用例,作为冒烟测试用例,怎么配置呢?

     

    pytest.ini

    [pytest]
    markers =
        demo: just for demo
        smoke

    其中smoke为标签,用例前加上标签名smoke,即都属于冒烟测试用例。

     

    image.png

     

     

    1 模块级别

     

    在模块里加上标签,那么该模块下的类、方法或函数都会带上标签。

    test_demo.py

    import pytest
    pytestmark = pytest.mark.smoke
    class TestDemo:
        def test_demo01(self):
            print("这是test_demo01")
        def test_demo02(self):
            print("这是test_demo02")
        def test_demo03(self):
            print("这是test_demo03")

     

    命令行输入:pytest -v -m smoke

    输出结果为:

    image.png

     

     

    2 类级别

    在类上添加标签,则类下的所有方法都带上标签

    test_demo.py

    import pytest
    @pytest.mark.smoke
    class TestDemo:
        def test_demo01(self):
            print("这是test_demo01")
        def test_demo02(self):
            print("这是test_demo02")
        def test_demo03(self):
            print("这是test_demo03")
    def test_demo04():
        print("这是test_demo04")

     

    在命令行输入:pytest -v -m smoke test_demo.py

    image.png

    image.png

    image.png

     

     

    3 函数级别

    在函数上添加标签,那么此函数带上标签。

    test_demo.py

    import pytest
    class TestDemo:
        def test_demo01(self):
            print("这是test_demo01")
        def test_demo02(self):
            print("这是test_demo02")
        def test_demo03(self):
            print("这是test_demo03")
    @pytest.mark.smoke
    def test_demo04():
        print("这是test_demo04")

     

    命令行输入:pytest -v -m smoke test_demo.py

    输出结果为:

    image.png

     

     

     

    更多系列文章,可以关注微信公众号:ITester软件测试小栈


  • 相关阅读:
    mongodb的学习-1-NoSQL
    mongodb的学习-3-在Mac上的安装配置
    面试题之算法与编程
    笔试题之javaweb
    笔试题之j2ee
    笔试题之代码查错
    笔试题之java基础
    javaweb笔记分享
    过滤器入门
    jsp入门
  • 原文地址:https://www.cnblogs.com/vivia/p/14470066.html
Copyright © 2011-2022 走看看