首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用类方法进行参数化,然后用对象调用该方法

使用类方法进行参数化,然后用对象调用该方法
EN

Stack Overflow用户
提问于 2022-05-13 06:30:04
回答 1查看 38关注 0票数 0

(伪代码)我有带有属性的类Node:

代码语言:javascript
运行
复制
class Node(WebElement):

    def __init__(self, element):
        super().__init__(element)
        ...

    @property
    def name(self):
        <returns name>

    @property
    def node_id(self):
        <returns node_id>

    @property
    def device_type(self):
        <returns device type>

等等..。我需要创建测试,这将检查Node属性是否为None (必须是参数化的,管理是有数量偏见的)。

简单的方法是使用getattr。

代码语言:javascript
运行
复制
@pytest.mark.parametrize("property", ["name" ,"node_id" ,"device_type"])
def test_01_device_information(self, property):
    property = request.param
    ...
    for node in nodes:
         assert device.getattr(node, property) is not None

但缺点是,这是动态反射,测试将知道运行时是否存在属性。不能找出丢失的财产。测试在夜间进行..。

我可以列出这样的属性列表(语法器会发现其中的属性已经消失):

代码语言:javascript
运行
复制
        @pytest.mark.parametrize("property", [Node.name ,Node.node_id ,Node.device_type])

在for循环中有在对象‘节点’上调用它的方法吗?我知道,我可以在__name__上调用property,但我也认为可能有更好的或不同的解决方案。我很感谢你的建议!)

EN

Stack Overflow用户

回答已采纳

发布于 2022-05-13 07:48:56

你可以:

代码语言:javascript
运行
复制
for node in nodes:
    assert property.fget(node) is not None
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72225302

复制
相关文章

相似问题

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