Having a straightforward name is the first step of being easy to read.
The second step should be a body that is conventional for the project and in most cases that would be the triple A: Arrange, Act, Assert. This AAA approach means that you setup everything in first part of the test then do the action with the system under test (SUT) and finally assert your expectations.
describe `Add/2`
test "Should return the sum when two integers are given"
# Arrange
p1 = 4
p2 = 9
expected = 13
# Act
result = SUT.add(p1, p2)
# Assert
assert expected == result
end
# In elixir we could simplify this, as long as it still
# follows he flow of arrange, act and assert
for {p1, p2, result} <- [{4, 9, 13}, {2, 2, 4}, {-2, 2, 0}] do
test "Should return #{result} when the parameters are #{p1} and #{p2}"
# ARRANGE
# We don't need these assigns but it portrays the
# idea of setting up dependencies first
param1 = p1
param2 = p2
# ACT + ASSERT
assert result = SUT.add(param1, param2)
end
end
end