Best Python code snippet using hypothesis
recursive.py
Source:recursive.py
1# coding=utf-82#3# This file is part of Hypothesis, which may be found at4# https://github.com/HypothesisWorks/hypothesis-python5#6# Most of this work is copyright (C) 2013-2015 David R. MacIver7# (david@drmaciver.com), but it contains contributions by others. See8# CONTRIBUTING.rst for a full list of people who may hold copyright, and9# consult the git log if you need to determine who owns an individual10# contribution.11#12# This Source Code Form is subject to the terms of the Mozilla Public License,13# v. 2.0. If a copy of the MPL was not distributed with this file, You can14# obtain one at http://mozilla.org/MPL/2.0/.15#16# END HEADER17from __future__ import division, print_function, absolute_import18from contextlib import contextmanager19from hypothesis.searchstrategy.wrappers import WrapperStrategy20from hypothesis.searchstrategy.strategies import OneOfStrategy, \21 SearchStrategy22class LimitReached(BaseException):23 pass24class LimitedStrategy(WrapperStrategy):25 def __init__(self, strategy):26 super(LimitedStrategy, self).__init__(strategy)27 self.marker = 028 self.currently_capped = False29 def do_draw(self, data):30 assert self.currently_capped31 if self.marker <= 0:32 raise LimitReached()33 self.marker -= 134 return super(LimitedStrategy, self).do_draw(data)35 @contextmanager36 def capped(self, max_templates):37 assert not self.currently_capped38 try:39 self.currently_capped = True40 self.marker = max_templates41 yield42 finally:43 self.currently_capped = False44class RecursiveStrategy(SearchStrategy):45 def __init__(self, base, extend, max_leaves):46 self.max_leaves = max_leaves47 self.base = LimitedStrategy(base)48 self.extend = extend49 strategies = [self.base, self.extend(self.base)]50 while 2 ** len(strategies) <= max_leaves:51 strategies.append(52 extend(OneOfStrategy(tuple(strategies), bias=0.8)))53 self.strategy = OneOfStrategy(strategies)54 def validate(self):55 self.base.validate()56 self.extend(self.base).validate()57 def do_draw(self, data):58 while True:59 try:60 with self.base.capped(self.max_leaves):61 return data.draw(self.strategy)62 except LimitReached:...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!