pytest-recording
pytest-flask-sqlalchemy
pytest-recording | pytest-flask-sqlalchemy | |
---|---|---|
1 | 1 | |
382 | 250 | |
2.1% | - | |
6.7 | 0.0 | |
3 days ago | about 1 year ago | |
Python | Python | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
pytest-recording
-
Two Methods for Testing HTTPS API Calls with Python and pytest and also Communicating with the In-laws
An alternate approach involves using VCR.py, a tool that records HTTP interactions in YAML files, then intercepts future HTTP requests and plays back the recorded responses. In this tutorial, we will use pytest-vcr to interface with VCR.py, although pytest-recording is another good option for doing the same.
pytest-flask-sqlalchemy
-
Pytest database not creating tables
import flask import pytest import responses import werkzeug from myproject.app import create_app from myproject.ext import db class TestClient(flask.testing.FlaskClient): def __init__(self, *args, user=None, auth_token=None, **kwargs): self.user = user self.auth_token = auth_token super().__init__(*args, **kwargs) def open(self, *args, **kwargs): headers = kwargs.pop("headers", werkzeug.datastructures.Headers()) headers.extend({"Authorization": f"Bearer {self.auth_token}"}) kwargs["headers"] = headers return super().open(*args, **kwargs) test_app = create_app(conf="test") test_app.test_client_class = TestClient @pytest.fixture(scope="session", autouse=True) def app(): with test_app.app_context(): yield test_app @pytest.fixture(scope="session", autouse=True) def _db(app): import myproject.libs.mock_data db.create_all() myproject.libs.mock_data.load_data() yield db db.session.close() db.drop_all() @pytest.fixture(scope="function", autouse=True) def enable_transactional_tests(db_session): """ Ensure every test case is wrapped in a database transaction, that is rollbacked automatically. https://github.com/jeancochrane/pytest-flask-sqlalchemy#enabling-transactions-without-fixtures """ pass @pytest.fixture(scope="function", autouse=True) def create_responses(app): """ Ensure responses is always turned on for all test cases, so that if a test case forgets to mock something, it will be caught, and responses will raise a ConnectionError. """ ENABLE_RESPONSES = app.config["ENABLE_RESPONSES"] if ENABLE_RESPONSES: responses.start() yield responses.stop() responses.reset() else: yield @pytest.fixture(scope="session") def client(app): with app.test_client() as client: yield client
What are some alternatives?
responses - A utility for mocking out the Python Requests library.
pytest-clarity - A plugin to improve the output of pytest with colourful unified diffs
Schemathesis - Automate your API Testing: catch crashes, validate specs, and save time
kubetest - Kubernetes integration testing in Python via pytest
betamax - A VCR imitation designed only for python-requests.
SeleniumBase - 📊 Python's all-in-one framework for web crawling, scraping, testing, and reporting. Supports pytest. UC Mode provides stealth. Includes many tools.
tavern - A command-line tool and Python library and Pytest plugin for automated testing of RESTful APIs, with a simple, concise and flexible YAML-based syntax
flask_for_startups - Flask boilerplate using a services oriented structure
VCR.py - Automatically mock your HTTP interactions to simplify and speed up testing
pytest-codeblocks - :page_facing_up: Test code blocks in your READMEs
openverse-catalog - Identifies and collects data on cc-licensed content across web crawl data and public apis.
pytest-langchain - ✅ Pytest-style test runner for langchain projects