pytest中Mark标记的使用

pytest可以自定义标签,在执行案例的时候,可以通过参数的方式,只执行该标签下的案例,这样,就能够在大量的案例中执行对应各种各样标签下测试案例

1.打标签的基本步骤

要使用标签,基本需要以下几个步骤

  • 注册标签
  • 给对应的案例打上标签
  • 执行对应标签下的案例

以上步骤,并不是都是必须的,但如果没有做其中的步骤,执行测试用例的时候,程序会报警告,有些则会导致程序出现问题。

1.1 注册标签

第一步:创建一个conftest.py的文件,你需要注意以下几点:

  • 创建路径:你要执行pytest命令的目录下创建
  • 文件名:不允许进行修改!!(pytest固定的)

第二步:在conftest.py文件中重写pytest_configure(config)函数

可能pytest在执行主程序的时候,会去加载执行路径中conftest.py文件夹下的pytest_configure(config)函数,而这个函数,就是用来标签注册的函数。所以,要注册标签,就这样去写吧!

写法(直接上代码):

def pytest_configure(config):
    config.addinivalue_line("markers", "demo")
    config.addinivalue_line("markers", "案例1:我只是个标签")

我们可以看到传入的参数config中有一个addinivalue_line方法,第一个参数传入的是 固定的[markers],至少标签是这样加的,第二个传入的参数,是标签名,但是又两种写法一种是不加任何解释的,另一种,后面稍微解释了一下。
在上面的使用中,加了两个标签,标签名如下所示:

  • demo
  • 案例1

测试的时候,这里故意使用中文,说明,标签是支持中文的,但是配置文件的方式只支持英文,所以这里推荐使用这一种进行注册~~
当然,如果你能力足够,你可以尽情改造该函数,因为在注册标签的时候,你能够做很多其它的事情。不过如果你是小白的话,请不要乱修改该内容。

1.2 给对应的案例打上标签

测试案例是可以通过类,类中的函数,单独的函数以及文件的方式进行组织的。因此我们能够通过把标签打到不同的级别上。先看代码:

import pytest


@pytest.mark.案例1
def test_demoA():
    print("函数级别的test_demo01")


@pytest.mark.案例1
@pytest.mark.demo
def test_demoB():
    print("函数级别的test_demo02")


@pytest.mark.demo
class TestDemo:
    @pytest.mark.案例1
    def test_demoC(self):
        print("运行测试1")

    def test_demoD(self):
        print("运行测试2")

该代码是写到同一个文件中的,我们可以看到如下的测试用例的分布如下所示:

  • test_demoA
  • test_demoB
  • TestDemo
    • test_demoC
    • test_demoD

其中这里面既有单独的函数测试方法,又有类中的测试方法。
打标签的时候,需要清楚该标签是给哪个级别打。

  • 写到类前面的标签,该类下的所有函数都有该标签
  • 写到方法前面的标签,只会给对应的函数打该标签

所以标签【案例1】下的测试案例为 A、B、C
而标签【demo】下的测试案例为B、C、D

1.3 执行带有标签的案例

命令行输入【这里多加了-v -s的命令,用于查看打印】:

pytest -v -s -m=案例1

pytest 代码测试调用的方式:

import pytest
pytest.main(["-m=案例1", "-s", "-v"])

参数语法为: -m=标签名

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值