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

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

     

    配置文件

    定义配置文件名

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

     

    配置文件格式
    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时,运行结果如下:

    图片

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

    运行结果为:

    图片

     

    ② 案例二:addopts

    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

    输出结果为:

    图片

    测试用例执行实战

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

     

    pytest.ini

    [pytest]
    markers =
        demo: just for demo
        smoke
    

      

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

     

     

    模块级别

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

    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

    输出结果为:

    图片

     

    类级别

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

    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

    图片

     

    函数级别

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

    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

    输出结果为:

    图片

  • 相关阅读:
    vue 优化hash持久化缓存
    用vue的抽象组件来做一个防止img标签url为空或url地址出错的验证
    读源码学会一些编程小技巧
    webpack编译后的代码如何在浏览器执行
    vue@cli3 public目录下的静态图片,如何使用在css类文件中(sass可行,纯css不行)
    vue@cli3 项目模板怎么使用public目录下的静态文件,找了好久都不对,郁闷!
    vscode如何配置ts的lint,如何配置才能让eslint和prettier不冲突一键格式化代码(vue开发使用)
    rollup 使用babel7版本的插件rollup-plugin-babel,rollup-plugin-babel使用报错解决办法。
    深入研究webpack之Tree Shaking相关属性sideEffects用处
    前端性能优化之http缓存
  • 原文地址:https://www.cnblogs.com/chenyablog/p/15171787.html
Copyright © 2011-2022 走看看