美文网首页
pytest-用例打标签

pytest-用例打标签

作者: 测试探索 | 来源:发表于2022-05-01 10:01 被阅读0次

知识点:一、用例打标签:pytest.mark

1.1、在pytest.ini文件中markers这个配置项中注册标签
image.png
1.2、给用例加标签
#第一种方式 
1、通过@pytest.mark.标签名,给单条用例加标签

#第二种方式
class TestClass(object):
       pytestmark = pytest.mark.已注册标签名   # 只打1个标签
       pytestmark = [pytest.mark.标签1, pytest.mark.标签2]   # 多标签模式

#在 模块文件里,同理(py文件下,所有测试函数和测试类里的测试函数,都有该标签):
   import pytest
   pytestmark = pytest.mark.webtest
   pytestmark = [pytest.mark.标签1, pytest.mark.标签2]   # 多标签模式
1.3、通过标签筛选用例执行
    1、pytest -m 标签名
    2、pytest.main(['-m', '标签名'])

    扩展:筛选多个标签(and  or  not):
        pytest -m "not musen" : 执行不带有musen这个标签的用例
        pytest -m "xiaojian or  musen" :  执行带有musen或者xiaojian这个标签的用例
        pytest -m "xiaojian and  musen" : 执行同时带有musen和xiaojian这个两个标签的用例
1.4、内置的标签:
    skip: 跳过用例
    skipif: 通过条件来决定是否跳过用例

知识点:二、用例运行方式

2.1、运行方式
    1、命令行: pytest 参数
    2、pytest.mian运行,pytest.main(['参数列表'])
2.2、通过标签筛选用例
    1、pytest -m 标签名
    2、pytest.main(['-m', '标签名'])
# 执行即有login又有demo标签的用例: 逻辑与。
# 特别说明:-m login and demo是列表的1个成员。
pytest.main(["-s","-v",
             "--alluredir=allure_result_files",
             "--clean-alluredir",
             "-m login and demo"])

# 执行有login 或者有demo标签的用例: 逻辑或
# 特别说明:-m login or demo是列表的1个成员
pytest.main(["-s","-v",
             "--alluredir=allure_result_files",
             "--clean-alluredir",
             "-m login or demo"])

# 执行有login 但是没有demo标签的用例: 逻辑非
# 特别说明:-m login and not demo是列表的1个成员
pytest.main(["-s","-v",
            "--alluredir=allure_result_files",
            "--clean-alluredir",
            "-m login and not demo",
            "--reruns","2","--reruns-delay","5"])
2.3、筛选执行的用例
    1、执行指定用例文件: pytest 文件名.py

    2、执行指定测试类: pytest 文件名.py::类名

    3、执行指定测试方法: pytest 文件名.py::类名::用例方法名

    4、执行执行的测试目录 pytest 目录名

    pytest.main(['testcase/test_demo3.py','-s'])
    参数 -s:  阻止用例中输出的信息被吞
    参数 -v:  显示用例执行的详细信息
    pytest.main(["--alluredir=allure_result_files",
         "--clean-alluredir"])    清理曾经的allure路径下的文件,保证用例的准确性

知识点:三、断言

unittest中内置的很多断言的方法,pytest中没有

pytest中断言 直接使用  assert关键字
案例讲解:第一个demo--浅谈

pytest.ini

[pytest]
markers =
    musen
    main
    xiaojian

test_demo1.py

import pytest
class TestLogin:

    @pytest.mark.xiaojian
    @pytest.mark.musen
    def test_pass(self):
        """正向用例"""
        assert 100 == 100

    @pytest.mark.xiaojian
    def test_01(self):
        """正向用例"""
        assert 99 == 100

    def test_02(self):
        """正向用例"""
        assert 98 == 100

    def test_03(self):
        """正向用例"""
        assert 197 == 100

框起来的比较重要

run.py

pytest.main(['-m', 'musen'])
# pytest  -m musen

一共四个用例,一个被打上musen标签,三个没有被打上musen标签,所以一个用例被选中,三个用例被丢弃


运行run.py,运行标签为musen的用例
案例讲解:skip使用
import pytest


class TestLogin:

    @pytest.mark.xiaojian
    @pytest.mark.musen
    def test_pass(self):
        """正向用例"""
        assert 100 == 100

    @pytest.mark.xiaojian
    def test_01(self):
        """正向用例"""
        assert 99 == 100

    def test_02(self):
        """正向用例"""
        assert 98 == 100

    def test_03(self):
        """正向用例"""
        assert 197 == 100


class TestRegister:

    @pytest.mark.musen
    def test_pass(self):
        """正向用例"""
        assert '注册成功' == '注册成功'

    def test_01(self):
        """正向用例"""
        assert '两次密码不一致' == '注册成功'


class TestDome:
    a = 99

    @pytest.mark.skip
    def test_demo1(self):
        assert 999 == 999

    @pytest.mark.skipif(a == 99,reason='a不等于99才执行该用例')
    def test_demo3(self):
        assert 999 == 999

直接在文件所在目录下,打开控制台,输入pytest,可得到结果


结果部分截图1
结果部分截图2

相关文章

网友评论

      本文标题:pytest-用例打标签

      本文链接:https://www.haomeiwen.com/subject/nbmyyrtx.html