I am considering if it is worthy having a general discussion about `setup` and `teardown` in the moduledoc and keep a brief discussion here, to avoid the duplication. Here is an example of how we could reword it:

    Both `setup` and `teardown` accepts an optional `context` argument that
    provides information about the test. **Note**: this `context` is common
    for `setup` and `teardown` functions, but is separate from the context of
    `setup_all` and `teardown_all` functions.
  
    If you return `{ :ok, kwlist }` from this function, the `kwlist` will get
    merged into `context` that will be available in all subsequent callbacks.
    Returning `:ok` from this function leaves the context unchanged.
  
    Returning anything else will force the current test to fail, and subsequent
    callbacks won't be called for it.
  
    It is allowed to define multiple `setup`/`teardown` functions and they will be
    called sequentially.

What do you think?