如何定义自定义数据类的假设策略[已关闭]

问题描述 投票:0回答:1

我目前正在使用假设来模糊我的测试,但随后我需要生成随机数据类,因此为每个数据类构建策略,例如

# Base types
uint64 = st.integers(min_value=0, max_value=2**64 - 1)
uint256 = st.integers(min_value=0, max_value=2**256 - 1)

# Dataclasses types
account = st.fixed_dictionaries(
    {
        "nonce": uint64,
        "balance": uint256,
        "code": st.binary(),
    }
).map(lambda x: Account(**x))

有没有办法避免这种明确的策略定义?不知何故,就像 rust 任意一样,从原始字节缓冲区生成类型良好的结构化值。

python fuzzing python-hypothesis
1个回答
1
投票

hypothesis.strategies.builds

数据类是通过类型提示的推断来本地处理的。

因此,如果您的数据类使用注册(或本身可自省)的类型进行了正确的类型提示,使得

from_type
返回您想要的策略,那么它应该只是

account = st.builds(Account)

如果您在正常的假设检验中使用这些,您甚至不需要指定; 让假设来推断它

© www.soinside.com 2019 - 2024. All rights reserved.