Getting started¶
Creating a new test project¶
Before writing tests, you need to setup a lemoncheesecake project.
The command:
$ lcc bootstrap myproject
creates a new project directory “myproject” containing one file “project.py” (it contains your project settings) and a “suites” directory where you can add your test suites.
Writing a suite¶
A suite looks like this:
# suites/mysuite.py:
import lemoncheesecake.api as lcc
from lemoncheesecake.matching import *
SUITE = {
"description": "My suite"
}
@lcc.test("My test")
def my_test():
check_that("value", "foo", equal_to("foo"))
Note
About imports:
lemoncheesecake.api
is imported as a module aliased tolcc
and contains the complete lemoncheesecake API needed to write testslemoncheesecake.matching
is imported using a wildcard import to make matching operations more natural to read:# this, is more easier to read: check_that("value", 1, is_integer(greater_than(0))) # than that: lcc.check_that("value", 1, lcc.is_integer(lcc.greater_than(0)))
Using the default project.py
file, suites will be loaded from the suites
sub directory.
Running the tests¶
The command lcc run
is in charge of running the tests, it provides several option to filter the test to be run and
to set the reporting backends that will be used.
$ lcc.py run --help
usage: lcc.py run [-h] [--desc DESC [DESC ...]] [--tag TAG [TAG ...]]
[--property PROPERTY [PROPERTY ...]]
[--link LINK [LINK ...]] [--disabled] [--passed] [--failed]
[--skipped] [--enabled] [--from-report FROM_REPORT]
[--exit-error-on-failure] [--stop-on-failure]
[--report-dir REPORT_DIR]
[--reporting REPORTING [REPORTING ...]]
[--enable-reporting ENABLE_REPORTING [ENABLE_REPORTING ...]]
[--disable-reporting DISABLE_REPORTING [DISABLE_REPORTING ...]]
[path [path ...]]
optional arguments:
-h, --help show this help message and exit
Filtering:
path Filter on test/suite path (wildcard character '*' can
be used)
--desc DESC [DESC ...]
Filter on descriptions
--tag TAG [TAG ...], -a TAG [TAG ...]
Filter on tags
--property PROPERTY [PROPERTY ...], -m PROPERTY [PROPERTY ...]
Filter on properties
--link LINK [LINK ...], -l LINK [LINK ...]
Filter on links (names and URLs)
--disabled Filter on disabled tests
--passed Filter on passed tests (only available with --from-report)
--failed Filter on failed tests (only available with --from-report)
--skipped Filter on skipped tests (only available with --from-report)
--enabled Filter on enabled (non-disabled) tests
--from-report FROM_REPORT
When enabled, the filtering is based on the given
report
Test execution:
--exit-error-on-failure
Exit with non-zero code if there is at least one non-
passed test
--stop-on-failure Stop tests execution on the first non-passed test
Reporting:
--report-dir REPORT_DIR, -r REPORT_DIR
Directory where report data will be stored
--reporting REPORTING [REPORTING ...]
The list of reporting backends to use
--enable-reporting ENABLE_REPORTING [ENABLE_REPORTING ...]
The list of reporting backends to add (to base
backends)
--disable-reporting DISABLE_REPORTING [DISABLE_REPORTING ...]
The list of reporting backends to remove (from base
backends)
Tests are run like this:
$ lcc run
============================= my_first_suite ==============================
OK 1 # some_test
Statistics :
* Duration: 0s
* Tests: 1
* Successes: 1 (100%)
* Failures: 0
The generated HTML report is available in the file report/report.html
.