首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pytest:使用mark.paramatrize vs fixture(params=[])参数化测试数据

Pytest:使用mark.paramatrize vs fixture(params=[])参数化测试数据
EN

Stack Overflow用户
提问于 2020-09-21 05:38:00
回答 1查看 199关注 0票数 1

我正在尝试自学Pytest,并试图理解使用@pytest.fixture(params=[])和@pytest.mark.parametrization()参数化测试数据之间的区别。我已经设置了下面的代码,看看它们是如何工作的,它们都返回相同的结果。但是,我不确定是否存在其中一种方法优于另一种方法的用例。使用一种方法比使用另一种方法有好处吗?

代码语言:javascript
复制
import pytest

@pytest.fixture(params=["first parameter", "second parameter", "third parameter"])
def param_fixture(request):
    return request.param

def parametrize_list():
    return ["first parameter", "second parameter", "third parameter"]

def test_using_fixture_params(param_fixture):
    """Tests parametrization with fixture(params=[])"""
    assert "parameter" in param_fixture

@pytest.mark.parametrize("param", parametrize_list())
def test_using_mark_parametrize(param):
    """Tests parametrization with mark.parametrize()"""
    assert "parameter" in param

上面的代码有以下结果。

代码语言:javascript
复制
test_parametrization.py::test_using_fixture_params[first parameter] PASSED
test_parametrization.py::test_using_fixture_params[second parameter] PASSED
test_parametrization.py::test_using_fixture_params[third parameter] PASSED
test_parametrization.py::test_using_mark_parametrize[first parameter] PASSED
test_parametrization.py::test_using_mark_parametrize[second parameter] PASSED
test_parametrization.py::test_using_mark_parametrize[third parameter] PASSED
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-21 05:53:06

Fixture通常用于将数据结构加载到测试中,并传递给测试函数。@pytest.mark.parametrize是测试具有不同输入的大量迭代的首选方法(如上所述)。

在启动时,这是一个很方便的资源:https://realpython.com/pytest-python-testing/

代码语言:javascript
复制
from data_module import Data

class TestData:
    """
    Load and Test data
"""
    @pytest.fixture(autouse=True)
    def data(test):
        return Data()


    def test_fixture(data):
        result = do_test(data)
        assert result

    @pytest.mark.parametrize('options', ['option1', 'option2', 'option3'])
    def test_with_parameterisation(data, options)
        result_with_paramaterisation(data, options)
        assert result_with_paramaterisation

``
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63983924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档