pytest入门一:用例的执行范围

从一个或多个目录开始查找,可以在命令行指定文件名或目录名。如果未指定,则使用当前目录。

  • 测试文件以 test_ 开头或以 _test 结尾

  • 测试类以 Test 开头 ,并且不能带有 init 方法

  • 测试函数以 test_ 开头

  • 断言使用基本的 assert 即可

  • 所有的包 pakage 必须要有__init__.py 文件

复制代码
# test_2.py
import sys

import pytest

def add(x,y):
    return x + y

@pytest.mark.add
def test_add():
    assert add(1,2) == 3
    assert add(2,3) == 5
    assert add(10,2) == 12

def is_win32():
    return True if sys.platform == 'win32' else False

class TestDemo:

    def test_demo(self):
        x = "hello world"
        print(f"{x} python")
        assert 'h' in x

    @pytest.mark.skipif(sys.platform == 'win32',reason='win32跳过用例')
    def test_demo3(self):
        x = "hello world"
        print(f"{x} python")
        assert 'h' in x



    only_win32 = pytest.mark.skipif(is_win32(),reason='win32跳过用例')
    @only_win32
    def test_demo4(self):
        x = "hello world"
        print(f"{x} python")
        assert 'h' in x

    @pytest.mark.skip("变更")
    def test_demo2(self):
        x = 'hello'
        assert hasattr(x,"check")

    @pytest.mark.xfail(reason="bug待修复")
    def test_demo5(self):
        x = 'hello'
        assert hasattr(x, "check")

if __name__ == "__main__":
    pytest.main(['-v', '-s'])

1)执行全部

if name == "main" : pytest.main(['-v' , '-s'])

2)执行某个文件

if name == "main" :

pytest.main(['-v' , '-s' ,'test_2.py'])

3)执行某个类

if name == "main" :

pytest.main(['-v' , '-s' ,'test_2.py::TestDemo'])

4) 执行某个方法

if name == "main" :

pytest.main(['-v' , '-s' ,'test_2.py::TestDemo::test_demo'])

5) mark 打标执行 pytest.mark.add

6) skip忽略执行 @pytest.mark.skip("变更")

7) 条件忽略skipif @pytest.mark.skipif(sys.platform == 'win32' ,reason='win32跳过用例')

8)xfail:预期失败 @pytest.mark.xfail

真失败会显示xfailed,成功会显示xpassed,应用场景:已知bug标注,后续验证修复

相关推荐
姚青&1 天前
Pytest 测试用例编写
测试用例·pytest
Warren981 天前
Pytest Fixture 作用域与接口测试 Token 污染问题实战解析
功能测试·面试·单元测试·集成测试·pytest·postman·模块测试
serve the people2 天前
python环境搭建 (七) pytest、pytest-asyncio、pytest-cov 试生态的核心组合
开发语言·python·pytest
真智AI3 天前
用 LLM 辅助生成可跑的 Python 单元测试:pytest + coverage 覆盖率报告(含运行指令与排坑)
python·单元测试·pytest
Warren983 天前
Allure 常用装饰器:实战用法 + 最佳实践(接口自动化)
运维·服务器·git·python·单元测试·自动化·pytest
Warren984 天前
Pytest Fixture 到底该用 return 还是 yield?
数据库·oracle·面试·职场和发展·单元测试·pytest·pyqt
Warren985 天前
Pytest Fixture 作用域详解:Function、Class、Module、Session 怎么选
面试·职场和发展·单元测试·pytest·pip·模块测试·jira
我的xiaodoujiao6 天前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 44--将自动化测试结果自动推送至钉钉工作群聊
前端·python·测试工具·ui·pytest
我的xiaodoujiao6 天前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 45--生成项目需要的requirements.txt依赖文件
python·学习·测试工具·pytest
月明长歌6 天前
全栈测试修炼指南:从接口策略到 Python+Pytest+Allure 企业级架构
python·架构·pytest