Using `@describetag` in Elixir Tests
Wow! ExUnit have some special tags for @moduletag
and @describetag
which are self explanatory if you know what tags are used for in ExUnit. They are so useful in case you want to, for example, only run that section of tests:
defmodule MyApp.AccountsTest do
use MyApp.DataCase
@moduletag :module_tag
describe "search" do
@describetag :describe_tag
@tag :test_tag
test "return all users" do
user_1 = insert!(User)
user_2 = insert!(User)
assert Accounts.search(User) == [user_1, user_2]
end
...
end
...
end
In case you want to run only tests that match with a module (file) level @moduletag
:
my_app git:(main) ✗ mix test --only my_module_tag
Excluding tags: [:test]
Including tags: [:my_module_tag]
............
Finished in 0.2 seconds
22 tests, 0 failures, 10 excluded
Or if we want to run all tests that match with a describe block tagged with @describetag
:
my_app git:(main) ✗ mix test --only my_describe_tag
Excluding tags: [:test]
Including tags: [:my_describe_tag]
....
Finished in 0.2 seconds
22 tests, 0 failures, 18 excluded
We can see by the number of excluded tests that this works great as expected.
Tweet