Skip to main content

Hypothesis plugin for trio

Project description

https://github.com/python-trio/hypothesis-trio/actions/workflows/ci.yml/badge.svg?branch=master https://codecov.io/gh/python-trio/hypothesis-trio/branch/master/graph/badge.svg

Welcome to hypothesis-trio!

Hypothesis supports Trio out of the box for non-stateful tests. This project aims at supporting the stateful mode ;-)

License: Your choice of MIT or Apache License 2.0

Usage

Replace hypothesis.stateful.RuleBasedStateMachine by hypothesis_trio.stateful.TrioRuleBasedStateMachine:

from hypothesis_trio.stateful import TrioRuleBasedStateMachine, run_state_machine_as_test


def test_trio_number_modifier(hypothesis_settings):
    class NumberModifier(TrioRuleBasedStateMachine):

        folders = Bundle('folders')
        files = Bundle('files')

        @initialize(target=folders)
        async def init_folders(self):
            await trio.sleep(0)
            return '/'

        @rule(target=folders, name=name_strategy)
        async def create_folder(self, parent, name):
            await trio.sleep(0)
            return '%s/%s' % (parent, name)

        @rule(target=files, name=name_strategy)
        async def create_file(self, parent, name):
            await trio.sleep(0)
            return '%s/%s' % (parent, name)

        async def teardown(self):
            await trio.sleep(0)

    run_state_machine_as_test(NumberModifier, settings=hypothesis_settings)

Support for Trio-Asyncio

trio-asyncio allows to mix asyncio and trio code altogether. To support it in your test, you should use hypothesis_trio.stateful.TrioAsyncioRuleBasedStateMachine:

class CheckAsyncioLoop(TrioAsyncioRuleBasedStateMachine):

    @initialize()
    async def initialize(self):
        assert self.get_asyncio_loop() == asyncio.get_event_loop()
        await trio_asyncio.aio_as_trio(lambda: asyncio.sleep(0))

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hypothesis-trio-0.6.0.tar.gz (19.6 kB view details)

Uploaded Source

Built Distribution

hypothesis_trio-0.6.0-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file hypothesis-trio-0.6.0.tar.gz.

File metadata

  • Download URL: hypothesis-trio-0.6.0.tar.gz
  • Upload date:
  • Size: 19.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.2.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.9

File hashes

Hashes for hypothesis-trio-0.6.0.tar.gz
Algorithm Hash digest
SHA256 d7ab108ac99758011b20f2448f1b1269375c68c1ffda9e4468600a4975ff955c
MD5 f0cf91ba083b6ee91f3fe0460f8d4036
BLAKE2b-256 2578007b68f95bba5854a99a106a2e2197478320a80c0abfa4c17d40d46c4b66

See more details on using hashes here.

File details

Details for the file hypothesis_trio-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: hypothesis_trio-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 15.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.2.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.9

File hashes

Hashes for hypothesis_trio-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3ac261dc6fcf3862d7d57ffa52d294539f8d807ac9483d58a8060df3c9e856fc
MD5 26e73e711c8803abf5b2dce220f15673
BLAKE2b-256 cf2bb22113f2076b5e733a2d69ba3e28397f42e09b884df69ecac1cfaa33e221

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page