日常积累 | 初识Pytest

微信搜索:Python测试社区  置顶关注订阅号,时刻阅读精彩好文

前半部分主要针对之前安装Python未装上pip工具,后期只能使用手动安装教程(百分百有效)

后半部分主要是最近在学习基于python的pytest框架,进行记录分享,希望对大家有所帮助,后期会逐步的将这个框架学习并分享完毕,学习的路总是很漫长,没接触一个新的知识点都是进步

注:本文内容来源于上海悠悠教学文档以及网路相关知识点综合总结,只作为知识分享,如有侵权可联系删除

PIP安装教程

1. 首先,在我们的浏览器访问https://bootstrap.pypa.io/get-pip.py这个网址,进入如下页面进行Ctrl+S

2. 然后Ctrl+S将get-pip.py文件 保存到你所安装的Python的Scripts目录下

3. 然后进入Scripts目录,并在该目录路径下,选中输入cmd,进入cmd界面

4.在cmd命令行界面输入 python get-pip.py  pip3工具就会自动加载安装

5. 然后输入pip -V 进行校验pip是否安装成功

初识Pytest

Pytest量python的种单元测试框果,与python自带的unittest测试框架类似,但是比uittst框架使用起来更简洁,效率更高

01. 具备大概如下特点

1. 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考

、 能够支持简单的单元测试和复杂的功能测试

2. 支持参数化

3. 执行测试过程中可以将某些测试跳过(skip) , 或者对某些预期失败的case标记成失败

4. 支持重复执行(rerun)失败的case

5. 支持运行由nose, unittest编的测试case

6. 可生成html报告

7. 方便的和持续集成工具jenkins集成

8. 可支持执行部分用例

9. 具有很多第三方插件,并且可以自定义扩展

02. 环境安装

1. 键盘win+R 快捷输入cmd

2. 进入cmd 输入 pip install -U pytest

备注:我这里是之前已经安装过所以输入如上提示 ,正常就是安装模块的进度条正常加载安装

3. 接着输入 pytest -V校验pytest是否安装成功

03. Pytest运行测试用例

1. 在安装python的目录下F:\python3\python_code\Study\API_AutoTest_Pytest新建一个测试文件test_pytest_demo.py ,接着编写代码新建一个测试类,添加几条case,新建完毕

# -*-coding=utf-8-*-
# authou:shichao


class Test_API_list:
    def test_001(self):
        x = 'this'
        assert 'h' in x


    def test_002(self):
        x = 'hello'
        assert hasattr(x, 'check')


    def test_003(self):
        a = 'hello'
        b = 'hello world'
        assert a in b

新建完毕,进入编写文件的目录输入cmd进入解释器,输入pytest进行执行我们的测试用例,查看对应的运行结果,我们可以从输入的结果看到,运行3条case成功2条错误1条 


pytest今天简单初识,总体来说前期安装以及基础是非常简单的,大家可尝试的安装学习一下,后期会不点在实战中深入,进行分享

日常积累,支持作者,可以将文章分享到朋友圈或点个在看,感谢大家的阅读!Bey , 下期再见

订阅号后台回复 989 Python 领取 4G 入门到进阶成长资料

`pytest` 是 Python 中最流行的测试框架之一,支持简洁的断言语法、参数化测试、夹具(fixture)和丰富的插件生态。以下是核心用法和示例: --- ### **1. 基础测试** - **规则**:测试函数以 `test_` 开头,放在 `test_*.py` 文件中。 - **示例**: ```python # test_demo.py def add(a, b): return a + b def test_add(): assert add(2, 3) == 5 assert add(-1, 1) == 0 ``` - **运行**: ```bash pytest test_demo.py -v # -v 显示详细输出 ``` --- ### **2. 参数化测试** 通过 `@pytest.mark.parametrize` 避免重复代码: ```python import pytest @pytest.mark.parametrize("a, b, expected", [ (1, 2, 3), (0, 0, 0), (-1, 1, 0), ]) def test_add_parametrized(a, b, expected): assert add(a, b) == expected ``` --- ### **3. 夹具(Fixture)** - **用途**:共享测试资源(如数据库连接、临时文件)。 - **示例**: ```python import pytest @pytest.fixture def sample_data(): return [1, 2, 3] def test_data_length(sample_data): assert len(sample_data) == 3 ``` - **自动调用**:`pytest` 会自动将夹具作为参数传入测试函数。 --- ### **4. 标记测试** - **常用标记**: - `@pytest.mark.skip`:跳过测试。 - `@pytest.mark.xfail`:预期失败。 - 自定义标记(需在 `pytest.ini` 中注册): ```python # pytest.ini [pytest] markers = slow: 标记耗时测试 web: 标记Web相关测试 ``` - **使用**: ```python @pytest.mark.slow def test_slow_operation(): import time time.sleep(2) assert True ``` - **运行特定标记**: ```bash pytest -m "slow" # 只运行标记为 slow 的测试 ``` --- ### **5. 异常测试** 验证函数是否抛出预期异常: ```python def divide(a, b): if b == 0: raise ValueError("除数不能为零") return a / b def test_divide_by_zero(): import pytest with pytest.raises(ValueError) as excinfo: divide(1, 0) assert "除数不能为零" in str(excinfo.value) ``` --- ### **6. 插件与报告** - **生成HTML报告**: ```bash pip install pytest-html pytest --html=report.html ``` - **并行测试**: ```bash pip install pytest-xdist pytest -n 4 # 使用4个进程并行运行 ``` --- ### **7. 常用命令** | 命令 | 作用 | |-------------------------------|-----------------------------| | `pytest` | 运行当前目录下所有测试 | | `pytest -k "test_add"` | 运行名称包含 `test_add` 的测试 | | `pytest -v` | 显示详细输出 | | `pytest --lf` | 仅运行上次失败的测试 | | `pytest --ff` | 优先运行上次失败的测试 | --- ### **完整示例** ```python # test_math.py import pytest @pytest.fixture def numbers(): return {"a": 10, "b": 20} @pytest.mark.parametrize("x, y, expected", [ (5, 5, 10), (0, 0, 0), ]) def test_add(x, y, expected, numbers): assert x + y == expected assert numbers["a"] == 10 def test_divide(): with pytest.raises(ZeroDivisionError): 1 / 0 ``` --- ### **注意事项** 1. 测试文件命名需为 `test_*.py` 或 `*_test.py`。 2. 断言失败时,`pytest` 会显示详细的上下文信息。 3. 通过 `conftest.py` 可全局共享夹具。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值