pytest方法间变量值传递--request夹具

相当于self对象,因为调试的时候测试用例是类似沙箱的单步运行,所以self对象的属性被阻挡在沙箱外边。

request.cls 是pytest中的一个属性,它允许您在测试类中共享数据或属性。当您使用pytest编写测试类时,request 夹具允许您在测试方法之间传递数据或设置属性。

具体来说,以下是 request.cls 的用法:

在测试类中设置属性:您可以在一个测试方法中使用 request.cls 来设置属性,然后在同一个测试类中的其他测试方法中访问这些属性。这使得在整个测试类中共享数据变得容易。

继承测试夹具:通过使用 @pytest.mark.usefixtures("request") 装饰器,您可以将 request 夹具应用于整个测试类,以使 request.cls 在整个测试类中可用。

下面是一个示例,展示了如何在pytest测试类中使用 request.cls:

python 复制代码
import pytest

class TestSample:
    def test_example1(self, request):
        # 在这个测试方法中,使用request夹具来写入属性到self对象中
        request.cls.shared_data = "Data from test_example1"
        assert 1 == 1

    def test_example2(self, request):
        # 在这个测试方法中,获取先前设置的属性
        shared_data = request.cls.shared_data
        assert shared_data == "Data from test_example1"

@pytest.mark.usefixtures("request")
class TestSampleFixture:
    pass

运行结果

python 复制代码
============================= test session starts =============================
collecting ... collected 2 items

test.py::TestSample::test_example1 PASSED                                [ 50%]
test.py::TestSample::test_example2 PASSED                                [100%]

============================== 2 passed in 0.02s ==============================

在上述示例中,request.cls 用于在 test_example1 中设置属性 shared_data,然后在 test_example2 中获取该属性。通过使用 @pytest.mark.usefixtures("request") 装饰器,我们确保 request 夹具在整个 TestSampleFixture 测试类中可用。

请注意,使用 request.cls 应该小心谨慎,确保不会引入测试之间的状态污染,因为pytest默认情况下会运行测试方法的时候不会重用测试类的实例。

相关推荐
ji_shuke2 天前
从零深入:基于 Playwright + Pytest + Allure 的企业级 Web 端到端自动化测试框架实战
前端·自动化测试·docker·jenkins·pytest·allure·playwright
祉猷并茂,雯华若锦3 天前
Selenium+Pytest自动化测试框架实战
selenium·测试工具·pytest
祉猷并茂,雯华若锦5 天前
Pytest+Selenium自动化测试:失败自动截图集成Allure报告
selenium·测试工具·pytest
我的xiaodoujiao8 天前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
一孤程11 天前
Pytest+Selenium搭建自动化框架-保姆级实战教程
selenium·自动化·pytest
名字还没想好☜15 天前
用 pytest fixture 组织可维护的测试:告别一堆重复的 setUp
数据库·python·oracle·pytest·测试
自动化和Linux17 天前
【pytest在pycharm中运行与CMD命令运行区别一】
python·pycharm·pytest
博观而约取厚积而薄发18 天前
Pytest 从入门到精通,一篇就够(超详细实战教程)
python·测试工具·单元测试·自动化·pytest
imzed18 天前
使用 Playwright + Pytest 构建 Web UI 自动化测试框架
python·自动化·pytest
普通网友18 天前
pytest一些常见的插件
开发语言·python·pytest