当前位置: 首页>>代码示例>>Python>>正文


Python strategies.composite方法代码示例

本文整理汇总了Python中hypothesis.strategies.composite方法的典型用法代码示例。如果您正苦于以下问题:Python strategies.composite方法的具体用法?Python strategies.composite怎么用?Python strategies.composite使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在hypothesis.strategies的用法示例。


在下文中一共展示了strategies.composite方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: from_schema

# 需要导入模块: from hypothesis import strategies [as 别名]
# 或者: from hypothesis.strategies import composite [as 别名]
def from_schema(schema):
    """Returns a strategy for objects that match the given schema."""
    check_schema(schema)
    # TODO: actually handle constraints on number/string/array schemas
    return dict(
        null=st.none(),
        bool=st.booleans(),
        number=st.floats(allow_nan=False),
        string=st.text(),
        array=st.lists(st.nothing()),
    )[schema["type"]]


# `@st.composite` is one way to write this - another would be to define a
# bare function, and `return st.one_of(st.none(), st.booleans(), ...)` so
# each strategy can be defined individually.  Use whichever seems more
# natural to you - the important thing in tests is usually readability! 
开发者ID:Zac-HD,项目名称:escape-from-automanual-testing,代码行数:19,代码来源:tough-bonus-problems.py

示例2: test_json_dumps

# 需要导入模块: from hypothesis import strategies [as 别名]
# 或者: from hypothesis.strategies import composite [as 别名]
def test_json_dumps(value):
    """Checks that value is serialisable as JSON."""
    # We expect this test to always pass - the point of this exercise is
    # to define a recursive strategy, and then investigate the values it
    # generates for a *passing* test.
    hypothesis.note("type: {}".format(type(value)))
    hypothesis.event("type: {}".format(type(value)))
    json.dumps(value)


# Takeaway: you've seen and played with a few ways to see what a
# passing test is doing, without having to inject a failure.


##############################################################################
# `@st.composite` exercise

# This goal of this exercise is to play with a contrived data dependency,
# using a composite strategy to generate inputs.  You can use the same tricks
# as above to check what's being generated, so try to keep the test passing! 
开发者ID:Zac-HD,项目名称:escape-from-automanual-testing,代码行数:22,代码来源:strategies-and-tactics.py

示例3: a_composite_strategy

# 需要导入模块: from hypothesis import strategies [as 别名]
# 或者: from hypothesis.strategies import composite [as 别名]
def a_composite_strategy(draw):
    """Generates a (List[int], index) pair.  The index points to a random positive
    element (>= 1); if there are no positive elements index is None.

    `draw` is used within a composite strategy as, e.g.::

        >>> draw(st.booleans()) # can draw True or False
        True

    Note that `draw` is a reserved parameter that will be used by the
    `st.composite` decorator to interactively draw values from the
    strategies that you invoke within this function. That is, you need
    not pass a value to `draw` when calling this strategy::

       >>> a_composite_strategy().example()
       ([-1, -2, -3, 4], 3)
    """
    # TODO: draw a list, determine the allowed indices, and choose one to return
    lst = []  # TODO: draw a list of integers here
    index = None
    # TODO: determine the list of allowed indices, and choose one if non-empty
    return (lst, index) 
开发者ID:Zac-HD,项目名称:escape-from-automanual-testing,代码行数:24,代码来源:strategies-and-tactics.py

示例4: bits

# 需要导入模块: from hypothesis import strategies [as 别名]
# 或者: from hypothesis.strategies import composite [as 别名]
def bits( nbits, signed=False, min_value=None, max_value=None ):
  BitsN = mk_bits( nbits )

  if (min_value is not None or max_value is not None) and signed:
    raise ValueError("bits strategy currently doesn't support setting "
                     "signedness and min/max value at the same time")

  if min_value is None:
    min_value = (-(2**(nbits-1))) if signed else 0
  if max_value is None:
    max_value = (2**(nbits-1)-1)  if signed else (2**nbits - 1)

  strat = st.booleans() if nbits == 1 else st.integers( min_value, max_value )

  @st.composite
  def strategy_bits( draw ):
    return BitsN( draw( strat ) )

  return strategy_bits() # RETURN A STRATEGY INSTEAD OF FUNCTION

#-------------------------------------------------------------------------
# strategies.bitslists
#-------------------------------------------------------------------------
# Return the SearchStrategy for a list of Bits with the support of
# dictionary based min/max value limit 
开发者ID:pymtl,项目名称:pymtl3,代码行数:27,代码来源:strategies.py

示例5: possibly_commented

# 需要导入模块: from hypothesis import strategies [as 别名]
# 或者: from hypothesis.strategies import composite [as 别名]
def possibly_commented(strategy):
    @st.composite
    def _strategy(draw):
        value = draw(strategy)

        add_trailing_comment = False
        if isinstance(value, (list, tuple, set)):
            add_trailing_comment = draw(st.booleans())

        add_comment = draw(st.booleans())

        if add_trailing_comment:
            comment_text = draw(st.text(alphabet='abcdefghijklmnopqrstuvwxyz #\\\'"'))
            value = trailing_comment(value, comment_text)

        if add_comment:
            comment_text = draw(st.text(alphabet='abcdefghijklmnopqrstuvwxyz #\\\'"'))
            value = comment(value, comment_text)

        return value

    return _strategy() 
开发者ID:tommikaikkonen,项目名称:prettyprinter,代码行数:24,代码来源:test_prettyprinter.py

示例6: test_a_composite_strategy

# 需要导入模块: from hypothesis import strategies [as 别名]
# 或者: from hypothesis.strategies import composite [as 别名]
def test_a_composite_strategy(value):
    lst, index = value
    assert all(isinstance(n, int) for n in lst)
    if index is None:
        assert all(n < 1 for n in lst)
    else:
        assert lst[index] >= 1


# Takeaway
# --------
# Why generate a tuple with a `@composite` strategy instead of using two
# separate strategies?  This way we can ensure certain relationships between
# the `lst` and `index` values!  (You can get a similar effect with st.data(),
# but the reporting and reproducibility isn't as nice.) 
开发者ID:Zac-HD,项目名称:escape-from-automanual-testing,代码行数:17,代码来源:strategies-and-tactics.py

示例7: bitslists

# 需要导入模块: from hypothesis import strategies [as 别名]
# 或者: from hypothesis.strategies import composite [as 别名]
def bitslists( types, limit_dict=None ):
  # Make sure limit_dict becomes a dict, not None
  limit_dict = limit_dict or {}
  if not isinstance( limit_dict, dict ):
    raise TypeError( f"bitlist '{types}' doesn't not take '{limit_dict}' " \
                      "to specify min/max limit. Here only a dictionary " \
                      "like { 0:range(1,2), 1:range(3,4) } is accepted. " )

  # We capture the strategies inside a list inside closure of the
  # strategy. For each element, we recursively compose a strategy based on
  # the type and the field limit.

  strats = [ _strategy_dispatch( type_, limit_dict.get( i, None ) )
              for i, type_ in enumerate(types) ]

  @st.composite
  def strategy_list( draw ):
    return [ draw(strat) for strat in strats ]

  return strategy_list() # RETURN A STRATEGY INSTEAD OF FUNCTION

#-------------------------------------------------------------------------
# strategies.bitstructs
#-------------------------------------------------------------------------
# Return the SearchStrategy for bitstruct type T with the support of
# dictionary-based min/max value limit 
开发者ID:pymtl,项目名称:pymtl3,代码行数:28,代码来源:strategies.py

示例8: bitstructs

# 需要导入模块: from hypothesis import strategies [as 别名]
# 或者: from hypothesis.strategies import composite [as 别名]
def bitstructs( T, limit_dict=None ):
  # Make sure limit_dict becomes a dict, not None
  limit_dict = limit_dict or {}
  if not isinstance( limit_dict, dict ):
    raise TypeError( f"bitstruct '{T}' doesn't not take '{limit_dict}' " \
                      "to specify min/max limit. Here only a dictionary " \
                      "like { 'x':range(1,2), 'y':range(3,4), 'z': { ... } } is accepted. " )

  # We capture the fields of T inside a list inside closure of the
  # strategy. For each field, we recursively compose a strategy based on
  # the type and the field limit.

  strats = [ _strategy_dispatch( type_, limit_dict.get( name, None ) )
              for name, type_ in T.__bitstruct_fields__.items() ]

  @st.composite
  def strategy_bitstruct( draw ):
    # Since strats already preserves the order of bitstruct fields,
    # we can directly asterisk the generatort to pass in as *args
    return T( * (draw(strat) for strat in strats) )

  return strategy_bitstruct() # RETURN A STRATEGY INSTEAD OF FUNCTION

# Dispatch to construct corresponding strategy based on given type
# The type can be a list of types, a Bits type, or a nested
# bitstruct. For nested bitstruct, we recursively call the bitstruct(T)
# function to construct the strategy 
开发者ID:pymtl,项目名称:pymtl3,代码行数:29,代码来源:strategies.py

示例9: bytevector_sedes_and_values_st

# 需要导入模块: from hypothesis import strategies [as 别名]
# 或者: from hypothesis.strategies import composite [as 别名]
def bytevector_sedes_and_values_st(draw):
    size = draw(st.integers(1, 65))
    return ByteVector(size), bytevector_value_st(size)


#
# Strategies for composite sedes objects with corresponding value strategy
# 
开发者ID:ethereum,项目名称:py-ssz,代码行数:10,代码来源:hashable_strategies.py

示例10: general_container_sedes_and_values_st

# 需要导入模块: from hypothesis import strategies [as 别名]
# 或者: from hypothesis.strategies import composite [as 别名]
def general_container_sedes_and_values_st(draw, element_sedes_and_elements_sequence):
    element_sedes, elements = zip(*element_sedes_and_elements_sequence)
    sedes = Container(element_sedes)
    values = st.tuples(*elements)
    return sedes, values


#
# Strategies for depth-1 composite sedes objects with corresponding value strategy
# 
开发者ID:ethereum,项目名称:py-ssz,代码行数:12,代码来源:hashable_strategies.py

示例11: basic_container_sedes_and_values_st

# 需要导入模块: from hypothesis import strategies [as 别名]
# 或者: from hypothesis.strategies import composite [as 别名]
def basic_container_sedes_and_values_st(draw, size=None):
    if size is None:
        size = draw(st.integers(min_value=1, max_value=4))

    element_sedes_and_elements_sequence = draw(
        st.lists(basic_sedes_and_values_st(), min_size=size, max_size=size)
    )
    return draw(
        general_container_sedes_and_values_st(element_sedes_and_elements_sequence)
    )


#
# Strategies for depth-2 composite sedes objects with corresponding value strategy
# 
开发者ID:ethereum,项目名称:py-ssz,代码行数:17,代码来源:hashable_strategies.py


注:本文中的hypothesis.strategies.composite方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。