Automatically mock your HTTP interactions to simplify and speed up testing

Overview

VCR.py 📼

PyPI Python versions Build Status Code Coverage Status Join the chat at https://gitter.im/kevin1024/vcrpy Code Style: black


vcr.py logo

This is a Python version of Ruby's VCR library.

Source code
https://github.com/kevin1024/vcrpy
Documentation
https://vcrpy.readthedocs.io/

Rationale

VCR.py simplifies and speeds up tests that make HTTP requests. The first time you run code that is inside a VCR.py context manager or decorated function, VCR.py records all HTTP interactions that take place through the libraries it supports and serializes and writes them to a flat file (in yaml format by default). This flat file is called a cassette. When the relevant piece of code is executed again, VCR.py will read the serialized requests and responses from the aforementioned cassette file, and intercept any HTTP requests that it recognizes from the original test run and return the responses that corresponded to those requests. This means that the requests will not actually result in HTTP traffic, which confers several benefits including:

  • The ability to work offline
  • Completely deterministic tests
  • Increased test execution speed

If the server you are testing against ever changes its API, all you need to do is delete your existing cassette files, and run your tests again. VCR.py will detect the absence of a cassette file and once again record all HTTP interactions, which will update them to correspond to the new API.

Usage with Pytest

There is a library to provide some pytest fixtures called pytest-recording https://github.com/kiwicom/pytest-recording

License

This library uses the MIT license. See LICENSE.txt for more details

Comments
  • Feature/new matchers

    Feature/new matchers

    Hi,

    I did the update for the #71 as promised. This merge request introduces backward incompatibility with old cassettes, but I think it's worth it.

    Improvements which I think should be done:

    1. url matcher could be removed on on favor of uri . (I left just for backward compatibility)
    2. ~~More integration and unit test should be added (I will do this after discussion of this pull request)~~ done.

    Looking forward for review. Max

    enhancement in progress 
    opened by mshytikov 47
  • Drop support for EOL Python 2.6 and 3.3

    Drop support for EOL Python 2.6 and 3.3

    Fixes #338.

    Also removes redundant code that was required to maintain support for Python 2.6.

    Here's the pip installs for vcrpy-unittest from PyPI for the last month (via pypinfo --percent --pip vcrpy-unittest pyversion) showing nothing for Python 2.6 or 3.3.

    | python_version | percent | download_count | | -------------- | ------: | -------------: | | 2.7 | 47.5% | 699 | | 3.6 | 43.7% | 643 | | 3.5 | 4.8% | 70 | | 3.4 | 4.0% | 59 |

    Also includes @samuelfekete's CI fixes from 36b5162 to (mostly) get the CI green! Thanks! (I would have cherry-picked that commit but git couldn't find it.)

    opened by hugovk 38
  • vcrpy doesn't work under django?

    vcrpy doesn't work under django?

    I'm trying to use vcrpy to accelerate the execution of my django application test suite. I'm using django 1.7 on Mac, with Python 2.7.

    I added the following couple of lines to one of my tests:

         import vcr
         with vcr.use_cassette('recording.yaml'):
    

    The result is an import error:

        import vcr
      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/vcr/__init__.py", line 2, in <module>
        from .config import VCR
      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/vcr/config.py", line 6, in <module>
        from .cassette import Cassette
      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/vcr/cassette.py", line 12, in <module>
        from .patch import CassettePatcherBuilder
      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/vcr/patch.py", line 8, in <module>
        from .stubs import VCRHTTPConnection, VCRHTTPSConnection
      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/vcr/stubs/__init__.py", line 9, in <module>
        from six.moves.http_client import (
    ImportError: No module named http_client
    

    The problematic code in stubs/init.py is :

    import six
    from six.moves.http_client import (
        HTTPConnection,
        HTTPSConnection,
        HTTPMessage,
        HTTPResponse,
    )
    

    This code seems to run fine when I'm just running it from a plain python console, but it results in the above ImportError under django.

    ready 
    opened by roy2006 34
  • Adding support for boto3

    Adding support for boto3

    boto3 bundles the requests library, so this basically is a copy and paste of the requests stubbing.

    I'm a little lost in the testing of this, with some guidance and/or help I could complete this.

    opened by dedsm 27
  • add httpx support

    add httpx support

    This PR adds support for httpx.

    The stub and tests are heavily based in the aiohttp implementation. You won't see any synchronous implementation because it was not necessary.

    Not sure if I edited the tox file correctly. (:

    opened by herdigiorgi 22
  • Upgrading to 1.6.0 seems conditional extra_require are not working on setup

    Upgrading to 1.6.0 seems conditional extra_require are not working on setup

    I receive this error when i upgraded to 1.6.0:

    Traceback (most recent call last):
      File "run_tests.py", line 14, in <module>
        from tests.app_login_tests import MainSiteTest  # noqa
      File "/my_app/tests/app_login_tests.py", line 7, in <module>
        from vcr_setup import vcrlib
      File "/my_app/tests/vcr_setup.py", line 1, in <module>
        import vcr
      File "/usr/local/lib/python2.7/dist-packages/vcr/__init__.py", line 2, in <module>
        from .config import VCR
      File "/usr/local/lib/python2.7/dist-packages/vcr/config.py", line 8, in <module>
        from .compat import collections
      File "/usr/local/lib/python2.7/dist-packages/vcr/compat.py", line 4, in <module>
        import mock
    ImportError: No module named mock
    

    Looking at the commits i think this new conditionals imports are not working https://github.com/kevin1024/vcrpy/commit/41949f7dc64a2ddb8a9c2cb845eac7bb8b94380b#diff-2eeaed663bd0d25b7e608891384b7298R36 i'm installing the package using pip im on python 2.7.

    opened by ialex 21
  • Handle PEP 479 with backward compat for python2.7

    Handle PEP 479 with backward compat for python2.7

    PEP479 renders the _handle_generator function of CassetteContextDecorator object erroneous in python3.7. Yet, we can't rely properly on yield from as python2.7 compat is still mandatory. Try to find a good balance between these two facts

    @graingert is it better for you?

    This would close #396

    bug need dev 
    opened by P-EB 20
  • use_cassette as decorator fails to pass unknown kwargs, pytest important

    use_cassette as decorator fails to pass unknown kwargs, pytest important

    usage requires edited conftest and execute with py.test --template FOO

    conftest.py

    import pytest
    @pytest.fixture
    def template(request):
        return request.config.getoption("--template")
    
    def pytest_addoption(parser):
        parser.addoption("--template", action="store",type='string',
                         help="set the name of the template to use in tests")
    

    test.py

    import vcr
    import pytest
    @vcr.use_cassette('test_vapp_find.yaml')
    def test_vapp_find(self, template):
            assert template == FOO
    

    usage:

    py.test -s test.py --template FOO

    suggested fix

    config.py

    # pass kwargs we dont know about merged_config = dict(kwargs.items() + merged_config.items())
    return Cassette.load(path, **merged_config)
    
    #cassette.py::Cassette.init
    **kwargs
    ):
    super(Cassette,self).init(**kwargs)
    
    opened by suederat 18
  • Error with body matcher for json, xmlrpc and form urlencoded

    Error with body matcher for json, xmlrpc and form urlencoded

    This is a tricky issue I encountered when using the body matcher on xmlrpc requests.

    Symptoms: Sometimes the request won't match, sometimes it will, and this only affects certain requests. This occurs on Python 3.4 and I believe other python 3 versions but not on 2.7

    Cause: An XMLRPC request has a body with XML inside which is generated from the parameters passed to the function call. Some parameters can be of dict type. xmlrpclib (or xmlrpc.client) will loop over items of the dict and generate the appropriate XML which will be the body of our POST request. Now items order is not guaranteed in dict and the behavior changed in python 3 such that the order of the same dict can change anytime and is not more or less constant on the same computer as in python 2. So the generated XML won't be necessarily the same as the one you recorded.

    Fix suggestion: A custom xmlrpc body matcher that takes that into account and will compare the struct XML elements in the correct order.

    The gzip compression didn't help me debuging this as I couldn't even read directly the cassettes...

    opened by Diaoul 17
  • Make request.headers always a CaseInsensitiveDict.

    Make request.headers always a CaseInsensitiveDict.

    Previously request.headers was a normal dict (albeit with the request.add_header interface) which meant that some code paths would do case-sensitive matching, for example remove_post_data_parameters which tests for 'Content-Type'. This change allows all code paths to get the same case-insensitive treatment.

    Additionally request.headers becomes a property to enforce upgrading it to a CaseInsensitiveDict even if assigned.

    opened by agriffis 16
  • Drop support for legacy Python 2.7

    Drop support for legacy Python 2.7

    Fixes #434.

    Python 2.7 reaches EOL on 2020-01-01. Many projects are pledging to drop support before or during 2020: https://python3statement.org/

    It's also relatively little used. Here's the pip installs for vcrpy from PyPI for May 2019:

    | category | percent | downloads | |----------|--------:|----------:| | 3.6 | 37.19% | 65,506 | | 3.7 | 26.36% | 46,432 | | 2.7 | 21.83% | 38,445 | | 3.5 | 11.53% | 20,303 | | 3.4 | 2.48% | 4,361 | | null | 0.31% | 553 | | 3.8 | 0.29% | 503 | | 3.3 | 0.01% | 14 | | Total | | 176,117 |

    Source: pypistats python_minor vcrpy --last-month # pip install pypistats

    There's one bit of six remaining in this PR, what's the best way to replace this?

        def test_case(self, predicate=None):
            predicate = predicate or self.is_test_method
            return six.with_metaclass(auto_decorate(self.use_cassette, predicate))
    
    opened by hugovk 15
  • build(deps): bump actions/checkout from 3.1.0 to 3.3.0

    build(deps): bump actions/checkout from 3.1.0 to 3.3.0

    Bumps actions/checkout from 3.1.0 to 3.3.0.

    Release notes

    Sourced from actions/checkout's releases.

    v3.3.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/actions/checkout/compare/v3.2.0...v3.3.0

    v3.2.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/actions/checkout/compare/v3.1.0...v3.2.0

    Changelog

    Sourced from actions/checkout's changelog.

    Changelog

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • Add an option to remove unused requests from cassette

    Add an option to remove unused requests from cassette

    This PR adds an option to remove previously recorded interactions if they are not used. I believe this feature can address the issue discussed in #208. We don't need to focus on ignoring all requests in the cassette file, but instead, we can write to file only replayed interactions and new ones. If no previous request is used, VCR will save only new interactions.

    There is a similar feature (merged, but not released) in Ruby VCR.

    opened by danielnsilva 0
  • Route requests to different cassette files depending on host

    Route requests to different cassette files depending on host

    I have various hosts that I need to hit for a unit test. I'd like to be able to route the responses from each host to its own specific cassette file. The documentation does not appear to show an example of how to do this. Is there a recommended way of doing this?

    opened by Jasonca2 0
  • Improved message on CannotOverwriteExistingCassetteException with no failed matchers

    Improved message on CannotOverwriteExistingCassetteException with no failed matchers

    Context

    Per discussion here: Originally posted by @salomvary in https://github.com/kevin1024/vcrpy/issues/533#issuecomment-1269519939

    CannotOverwriteExistingCassetteException can be raised along with 'no matchers failed' as the message details.

    In many cases, setting vcr.allow_playback_repeats for the affected test will clear the issue.

    Proposal

    Update the error handler to recognize this corner case and emit a message encouraging developers to consider whether they need to set vcr.allow_playback_repeats

    opened by edthedev 0
  • Question! Using VCR mechanics to record queries to sql database.

    Question! Using VCR mechanics to record queries to sql database.

    Does anyone know if there are any libraries that would allow to record and play queries to sql database? I don't per-see any obstacles in implementation. The question is does it even makes sense in terms of test speed improvement?

    opened by igor-polynets 2
Releases(v4.2.1)
  • v4.2.1(Aug 31, 2022)

    • Fix a bug where the first request in a redirect chain was not being recorded with aiohttp
    • Various typos and small fixes, thanks @jairhenrique, @timgates42
    Source code(tar.gz)
    Source code(zip)
  • v4.2.0(Jun 29, 2022)

    • Drop support for python < 3.7, thanks @jairhenrique, @IvanMalison, @AthulMuralidhar
    • Various aiohttp bigfixes (thanks @pauloromeira and boechat107)
    • Bugfix: filter_post_data_parameters not working with aiohttp. Thank you @vprakashplanview, @scop, @jairhenrique, and @cinemascop89
    • Bugfix: Some random misspellings (thanks @scop)
    • Migrate the CI suite to Github Actions from Travis (thanks @jairhenrique and @cclauss)
    • Various documentation and code misspelling fixes (thanks @scop and @Justintime50)
    • Bugfix: httpx support (select between allow_redirects/follow_redirects) (thanks @immerrr)
    Source code(tar.gz)
    Source code(zip)
  • v4.1.1(Oct 9, 2020)

    • Fix HTTPX support for versions greater than 0.15 (thanks @jairhenrique)
    • Include a trailing newline on json cassettes (thanks @AaronRobson)
    Source code(tar.gz)
    Source code(zip)
  • v4.1.0(Jul 31, 2020)

    • 4.1.0
      • Add support for httpx!! (thanks @herdigiorgi)
      • Add the new allow_playback_repeats option (thanks @tysonholub)
      • Several aiohttp improvements (cookie support, multiple headers with same key) (Thanks @pauloromeira)
      • Use enums for record modes (thanks @aaronbannin)
      • Bugfix: Do not redirect on 304 in aiohttp (Thanks @royjs)
      • Bugfix: Fix test suite by switching to mockbin (thanks @jairhenrique)
    Source code(tar.gz)
    Source code(zip)
  • v4.0.2(Dec 20, 2019)

  • v4.0.1(Dec 20, 2019)

  • v4.0.0(Dec 20, 2019)

  • v3.0.0(Dec 14, 2019)

    v3.0.0

    • This release is a breaking change as it changes how aiohttp follows redirects and your cassettes may need to be re-recorded with this update.
    • Fix multiple requests being replayed per single request in aiohttp stub #495 (@nickdirienzo)
    • Add support for request_info on mocked responses in aiohttp stub #495 (@nickdirienzo)
    • doc: fixed variable name (a -> cass) in an example for rewind #492 (@yarikoptic)
    Source code(tar.gz)
    Source code(zip)
  • v2.1.1(Nov 3, 2019)

    • 2.1.1
    • Format code with black (@neozenith)
    • Use latest pypy3 in Travis (@hugovk)
    • Improve documentation about custom matchers (@gward)
    • Fix exception when body is empty (@keithprickett)
    • Add pytest-recording to the documentation as an alternative Pytest plugin (@Stranger6667)
    • Fix yarl and python3.5 version issue (@neozenith)
    • Fix header matcher for boto3 - fixes #474 (@simahawk)
    Source code(tar.gz)
    Source code(zip)
  • v2.1.0(Aug 8, 2019)

    v2.1.0

    Updates

    • Add a rewind method to reset a cassette (thanks @khamidou)
    • New error message with more details on why the cassette failed to play a request (thanks @arthurHamon2, @neozenith)
    • Handle connect tunnel URI (thanks @jeking3)
    • Add code coverage to the project (thanks @neozenith)
    • Drop support to python 3.4
    • Add deprecation warning on python 2.7, next major release will drop python 2.7 support

    Fixes

    • Fix build problems on requests tests (thanks to @dunossauro)
    • Fix matching on 'body' failing when Unicode symbols are present in them (thanks @valgur)
    • Fix bugs on aiohttp integration (thanks @graingert, @steinnes, @stj, @lamenezes, @lmazuel)
    • Fix Biopython incompatibility (thanks @rishab121)
    • Fix Boto3 integration (thanks @1oglop1, @arthurHamon2)
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(Sep 19, 2018)

    • Support python 3.7 (fix httplib2 and urllib2, thanks @felixonmars)
    • [#356] Fixes before_record_response so the original response isn't changed (thanks @kgraves)
    • Fix requests stub when using proxy (thanks @samuelfekete @daneoshiga)
    • (only for aiohttp stub) Drop support to python 3.4 asyncio.coroutine (aiohttp doesn't support python it anymore)
    • Fix aiohttp stub to work with aiohttp client (thanks @stj)
    • Fix aiohttp stub to accept content type passed
    • Improve docs (thanks @adamchainz)
    Source code(tar.gz)
    Source code(zip)
  • v1.13.0(Jul 13, 2018)

    • Fix support to latest aiohttp version (3.3.2).
    • Fix content-type bug in aiohttp stub.
    • Properly save URL with query params properly when using aiohttp.
    Source code(tar.gz)
    Source code(zip)
  • v1.12.0(May 21, 2018)

    • Fix support to latest aiohttp version (3.2.1)
    • Adapted setup to PEP508
    • Support binary responses on aiohttp
    • Dropped support for EOL python versions (2.6 and 3.3)
    Source code(tar.gz)
    Source code(zip)
  • v1.11.1(May 28, 2017)

  • v1.11.0(May 2, 2017)

    Allow injection of persistence methods + bugfixes (thanks @j-funk and @IvanMalison) Support python 3.6 + CI tests (thanks @derekbekoe and @graingert) Support pytest-asyncio coroutines (thanks @graingert)

    Source code(tar.gz)
    Source code(zip)
  • v1.10.5(Jan 12, 2017)

    • Added a fix to httplib2 (thanks @carlosds730)
    • Fix an issue with aiohttp (thanks @madninja)
    • Add missing requirement yarl (thanks @lamenezes),
    • Remove duplicate mock triple (thanks @FooBarQuaxx)
    Source code(tar.gz)
    Source code(zip)
  • v1.10.1(Sep 12, 2016)

  • v1.10.0(Aug 14, 2016)

  • v1.9.0(Jul 16, 2016)

    • Add support for boto3 (thanks @desdm, @foorbarna).
    • Fix deepcopy issue for response headers when decode_compressed_response is enabled (thanks @nickdirienzo)
    Source code(tar.gz)
    Source code(zip)
  • v1.7.3(Aug 24, 2015)

    [#188] additional_matchers kwarg on use_casstte. [#191] Actually support passing multiple before_record_request functions (thanks @agriffis).

    Source code(tar.gz)
    Source code(zip)
  • v1.7.2(Aug 19, 2015)

  • v1.7.1(Aug 12, 2015)

  • v1.6.1(Jul 15, 2015)

    [#169] Support conditional requirements in old versions of pip, Fix RST parse errors generated by pandoc, [Tornado] Fix unsupported features exception not being raised, [#166] content-aware body matcher.

    Source code(tar.gz)
    Source code(zip)
  • v1.6.0(Jul 3, 2015)

    [#120] Tornado support (thanks @abhinav), [#147] packaging fixes (thanks @graingert), [#158] allow filtering post params in requests (thanks @MrJohz), [#140] add xmlrpclib support (thanks @Diaoul).

    Source code(tar.gz)
    Source code(zip)
  • v1.5.2(May 15, 2015)

Owner
Kevin McCarthy
Kevin McCarthy
Code for "SUGAR: Subgraph Neural Network with Reinforcement Pooling and Self-Supervised Mutual Information Mechanism"

SUGAR Code for "SUGAR: Subgraph Neural Network with Reinforcement Pooling and Self-Supervised Mutual Information Mechanism" Overview train.py: the cor

41 Nov 08, 2022
:game_die: Pytest plugin to randomly order tests and control random.seed

pytest-randomly Pytest plugin to randomly order tests and control random.seed. Features All of these features are on by default but can be disabled wi

pytest-dev 471 Dec 30, 2022
Thin-wrapper around the mock package for easier use with pytest

pytest-mock This plugin provides a mocker fixture which is a thin-wrapper around the patching API provided by the mock package: import os class UnixF

pytest-dev 1.5k Jan 05, 2023
Tools for test driven data-wrangling and data validation.

datatest: Test driven data-wrangling and data validation Datatest helps to speed up and formalize data-wrangling and data validation tasks. It impleme

269 Dec 16, 2022
Kent - Fake Sentry server for local development, debugging, and integration testing

Kent is a service for debugging and integration testing Sentry.

Will Kahn-Greene 100 Dec 15, 2022
The definitive testing tool for Python. Born under the banner of Behavior Driven Development (BDD).

mamba: the definitive test runner for Python mamba is the definitive test runner for Python. Born under the banner of behavior-driven development. Ins

Néstor Salceda 502 Dec 30, 2022
API Rest testing FastAPI + SQLAchmey + Docker

Transactions API Rest Implement and design a simple REST API Description We need to a simple API that allow us to register users' transactions and hav

TxeMac 2 Jun 30, 2022
No longer maintained, please migrate to model_bakery

Model Mommy: Smart fixtures for better tests IMPORTANT: Model Mommy is no longer maintained and was replaced by Model Bakery. Please, consider migrati

Bernardo Fontes 917 Oct 04, 2022
Headless chrome/chromium automation library (unofficial port of puppeteer)

Pyppeteer Pyppeteer has moved to pyppeteer/pyppeteer Unofficial Python port of puppeteer JavaScript (headless) chrome/chromium browser automation libr

miyakogi 3.5k Dec 30, 2022
Language-agnostic HTTP API Testing Tool

Dredd — HTTP API Testing Framework Dredd is a language-agnostic command-line tool for validating API description document against backend implementati

Apiary 4k Jan 05, 2023
nose is nicer testing for python

On some platforms, brp-compress zips man pages without distutils knowing about it. This results in an error when building an rpm for nose. The rpm bui

1.4k Dec 12, 2022
A library for generating fake data and populating database tables.

Knockoff Factory A library for generating mock data and creating database fixtures that can be used for unit testing. Table of content Installation Ch

Nike Inc. 30 Sep 23, 2022
Doing dirty (but extremely useful) things with equals.

Doing dirty (but extremely useful) things with equals. Documentation: dirty-equals.helpmanual.io Source Code: github.com/samuelcolvin/dirty-equals dir

Samuel Colvin 602 Jan 05, 2023
pytest plugin for distributed testing and loop-on-failures testing modes.

xdist: pytest distributed testing plugin The pytest-xdist plugin extends pytest with some unique test execution modes: test run parallelization: if yo

pytest-dev 1.1k Dec 30, 2022
Switch among Guest VMs organized by Resource Pool

Proxmox PCI Switcher Switch among Guest VMs organized by Resource Pool. main features: ONE GPU card, N OS (at once) Guest VM command client Handler po

Rosiney Gomes Pereira 111 Dec 27, 2022
Show, Edit and Tell: A Framework for Editing Image Captions, CVPR 2020

Show, Edit and Tell: A Framework for Editing Image Captions | arXiv This contains the source code for Show, Edit and Tell: A Framework for Editing Ima

Fawaz Sammani 76 Nov 25, 2022
Pytest plugin for testing the idempotency of a function.

pytest-idempotent Pytest plugin for testing the idempotency of a function. Usage pip install pytest-idempotent Documentation Suppose we had the follo

Tyler Yep 3 Dec 14, 2022
Simple frontend TypeScript testing utility

TSFTest Simple frontend TypeScript testing utility. Installation Install webpack in your project directory: npm install --save-dev webpack webpack-cli

2 Nov 09, 2021
FFPuppet is a Python module that automates browser process related tasks to aid in fuzzing

FFPuppet FFPuppet is a Python module that automates browser process related tasks to aid in fuzzing. Happy bug hunting! Are you fuzzing the browser? G

Mozilla Fuzzing Security 24 Oct 25, 2022
Front End Test Automation with Pytest Framework

Front End Test Automation Framework with Pytest Installation and running instructions: 1. To install the framework on your local machine: clone the re

Sergey Kolokolov 2 Jun 17, 2022