Testing
inline_snapshot.testing
provides tools which can be used to test inline-snapshot workflows.
This might be useful if you want to build your own libraries based on inline-snapshot.
The following example shows how you can use the Example
class to test what inline-snapshot would do with given the source code. The snapshots in the argument are asserted inside the run_*
methods, but only when they are provided.
from inline_snapshot.testing import Example
from inline_snapshot import snapshot
def test_something():
Example(
{
"test_a.py": """\
from inline_snapshot import snapshot
def test_a():
assert 1+1 == snapshot()
"""
}
).run_inline( # run without flags
reported_categories=snapshot(),
).run_pytest( # run without flags and check the pytest report
changed_files=snapshot(),
report=snapshot(),
).run_pytest( # run with create flag and check the changed files
["--inline-snapshot=create"],
changed_files=snapshot(),
)
from inline_snapshot.testing import Example
from inline_snapshot import snapshot
def test_something():
Example(
{
"test_a.py": """\
from inline_snapshot import snapshot
def test_a():
assert 1+1 == snapshot()
"""
}
).run_inline( # run without flags
reported_categories=snapshot(["create"]),
).run_pytest( # run without flags and check the pytest report
changed_files=snapshot({}),
report=snapshot(
"""\
Error: one snapshot is missing a value (--inline-snapshot=create)
You can also use --inline-snapshot=review to approve the changes interactively\
"""
),
).run_pytest( # run with create flag and check the changed files
["--inline-snapshot=create"],
changed_files=snapshot(
{
"test_a.py": """\
from inline_snapshot import snapshot
def test_a():
assert 1+1 == snapshot(2)
"""
}
),
)
API¶
Example
¶
__init__(files)
¶
Parameters:
Name | Type | Description | Default |
---|---|---|---|
files
|
str | dict[str, str]
|
a collecton of files where inline-snapshot opperates on, or just a string which will be saved as test_something.py. |
required |
run_inline(args=[], *, reported_categories=None, changed_files=None, report=None, raises=None)
¶
Execute the example files in process and run every test_*
function.
This is useful for fast test execution.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
args
|
list[str]
|
inline-snapshot arguments (supports only "--inline-snapshot=fix|create|..." ). |
[]
|
reported_categories
|
Snapshot[list[Category]] | None
|
snapshot of categories which inline-snapshot thinks could be applied. |
None
|
changed_files
|
Snapshot[dict[str, str]] | None
|
snapshot of files which are changed by this run. |
None
|
raises
|
Snapshot[str] | None
|
snapshot of the exception which is raised during the test execution. It is required if your code raises an exception. |
None
|
Returns:
Type | Description |
---|---|
Example
|
A new Example instance which contains the changed files. |
run_pytest(args=[], *, env={}, changed_files=None, report=None, stderr=None, returncode=None)
¶
Run pytest with the given args and env variables in an seperate process.
It can be used to test the interaction between your code and pytest, but it is a bit slower than run_inline
Parameters:
Name | Type | Description | Default |
---|---|---|---|
args
|
list[str]
|
pytest arguments like "--inline-snapshot=fix" |
[]
|
env
|
dict[str, str]
|
dict of environment variables |
{}
|
changed_files
|
Snapshot[dict[str, str]] | None
|
snapshot of files which are changed by this run. |
None
|
report
|
Snapshot[str] | None
|
snapshot of the report at the end of the pytest run. |
None
|
stderr
|
Snapshot[str] | None
|
pytest stderr output |
None
|
returncode
|
Snapshot[int] | None
|
snapshot of the pytest returncode. |
None
|
Returns:
Type | Description |
---|---|
Example
|
A new Example instance which contains the changed files. |