lemoncheesecake: Test Storytelling¶
lemoncheesecake is an end-to-end test framework for Python that brings trust around test results. It allows test developers to be very explicit about what their tests really do with logging, matchers, file attachments, etc..
Here is a test example:
# suites/suite.py
import json
import requests
import lemoncheesecake.api as lcc
from lemoncheesecake.matching import *
SUITE = {
"description": "Github tests"
}
@lcc.test("Test Organization end-point")
def organization():
lcc.set_step("Get lemoncheesecake organization information")
lcc.log_info("GET https://api.github.com/orgs/lemoncheesecake")
resp = requests.get("https://api.github.com/orgs/lemoncheesecake")
require_that("HTTP code", resp.status_code, is_(200))
data = resp.json()
lcc.log_info("Response\n%s" % json.dumps(data, indent=4))
lcc.set_step("Check API response")
check_that_in(
data,
"type", is_("Organization"),
"id", is_integer(),
"description", is_not_none(),
"login", is_(present()),
"created_at", match_pattern(r"^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$"),
"has_organization_projects", is_true(),
"followers", is_(greater_than_or_equal_to(0)),
"following", is_(greater_than_or_equal_to(0)),
"repos_url", ends_with("/repos"),
"issues_url", ends_with("/issues"),
"events_url", ends_with("/events"),
"hooks_url", ends_with("/hooks"),
"members_url", ends_with("/members{/member}"),
"public_members_url", ends_with("/public_members{/member}")
)
And here are the corresponding test results:
Note
In real test code, you’d better use lemoncheesecake-requests when doing HTTP / REST API testing.
See Getting Started to create your first test project.
Features¶
Advanced test hierarchies using suites, tests and nested suites
Test description and metadata: tags, properties (key=value associations) and links
Support for test filtering
Multiple reporting flavors built-in: HTML, JSON, XML, JUnit, ReportPortal, Slack notifications
Fixtures, parametrized tests
BDD support using behave
Test parallelization
Rich CLI toolbox
lemoncheesecake is compatible with Python 3.8-3.12.
Changelog¶
The Changelog will tell you about features, improvements and fixes of each version.
Installation and configuration¶
Writing tests¶
The lemoncheesecake ecosystem¶
lemoncheesecake-requests provides logging and response checking features for requests and HTTP / REST API / Web Services testing
lemoncheesecake-selenium is a package that helps you develop Web UI tests with selenium
Contact¶
Bugs and improvement ideas are welcomed in tickets.
A Google Groups forum is also available for discussions about lemoncheesecake: https://groups.google.com/forum/#!forum/lemoncheesecake .
License¶
lemoncheesecake is licensed under the Apache License