Skip to content

AverSpec/aver-py

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

averspec

Domain-driven acceptance testing for Python.

Same test, every adapter. Define behavior once, verify it at unit, HTTP, and browser levels.

Install

pip install averspec

Quick Example

from averspec import domain, action, assertion, implement, suite, unit

@domain("task-board")
class TaskBoard:
    create_task = action(dict)
    task_in_status = assertion(dict)

adapter = implement(TaskBoard, protocol=unit(lambda: {}))

@adapter.handle(TaskBoard.create_task)
def create_task(board, p):
    board[p["title"]] = p.get("status", "backlog")

@adapter.handle(TaskBoard.task_in_status)
def task_in_status(board, p):
    assert board.get(p["title"]) == p["status"]

s = suite(TaskBoard)

@s.test
def test_create_task(ctx):
    ctx.when.create_task({"title": "Fix bug"})
    ctx.then.task_in_status({"title": "Fix bug", "status": "backlog"})

CLI

aver run                    # run all tests
aver run --adapter unit     # filter by adapter
aver run --domain task-board  # filter by domain
aver approve                # update approval baselines
aver init                   # scaffold a new domain

Docs

averspec.dev · Architecture · Example App

License

MIT

About

Domain-driven acceptance testing for Python

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages