首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >工装工场如何使用工装夹具?

工装工场如何使用工装夹具?
EN

Stack Overflow用户
提问于 2022-11-01 20:37:58
回答 1查看 46关注 0票数 2

在scikit-learn中,有一个函数parametrize_with_checks()被用作pytest夹具工厂--它返回一个pytest.mark.parametrize夹具,并被称为带有可迭代的估计量的装饰器。

代码语言:javascript
复制
@parameterize_with_checks(list_of_estimators)

我的问题是,我的估算者列表可能会改变(或者我可能有多个列表),而我在一个固定设置中设置的每个列表。

这里是一个M(N)我们:

代码语言:javascript
复制
import pytest
from sklearn.linear_model import LinearRegression
from sklearn.utils.estimator_checks import parametrize_with_checks


@pytest.fixture
def models():
    return (LinearRegression(fit_intercept=flag) for flag in (False, True))


class TestModels:
    @parametrize_with_checks(models)
    def test_1(self, estimator, check):
        check(estimator)
        print("Do other stuff...")

    def test_2(self, models):
        print("Do even more stuff...")

但是,当models传递给parametrize_with_checks时,它仍然是一个函数对象,因此它会抛出一个错误。我怎么才能避开这一切?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-02 07:23:51

parametrize_with_checks()无法处理由固定装置设置的值。它只是作为一个函数来处理models,而不是一个固定设备。您只能从测试函数访问夹具。

因此,您需要将models设置为一个列表,或者调用parametrize_with_checks()中的模型函数。

代码语言:javascript
复制
import pytest
from sklearn.linear_model import LinearRegression
from sklearn.utils.estimator_checks import parametrize_with_checks


MODELS = [LinearRegression(fit_intercept=flag) for flag in (False, True)]


@pytest.fixture()
def models():
    return [LinearRegression(fit_intercept=flag) for flag in (False, True)]


class TestModels:
    @parametrize_with_checks(MODELS)
    # OR
    # @parametrize_with_checks(estimators=models())
    def test_1(self, estimator, check):
        check(estimator)
        print("Do other stuff...")

    def test_2(self, models):
        print("Do even more stuff...")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74281521

复制
相关文章

相似问题

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