Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add tests examples #4249

Merged
merged 4 commits into from
Oct 11, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 45 additions & 39 deletions website/docs/reference/node-selection/test-selection-examples.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@ Run generic tests only:


```bash
$ dbt test --select test_type:generic
dbt test --select test_type:generic
```

Run singular tests only:


```bash
$ dbt test --select test_type:singular
dbt test --select test_type:singular
```

In both cases, `test_type` checks a property of the test itself. These are forms of "direct" test selection.
Expand Down Expand Up @@ -87,8 +87,8 @@ By default, a test will run when ANY parent is selected; we call this "eager" in
In this mode, any test that depends on unbuilt resources will raise an error.

```shell
$ dbt test --select orders
$ dbt build --select orders
dbt test --select orders
dbt build --select orders
```

</TabItem>
Expand All @@ -102,8 +102,8 @@ It will only include tests whose references are each within the selected nodes.
Put another way, it will prevent tests from running if one or more of its parents is unselected.

```shell
$ dbt test --select orders --indirect-selection=cautious
$ dbt build --select orders --indirect-selection=cautious
dbt test --select orders --indirect-selection=cautious
dbt build --select orders --indirect-selection=cautious
```

</TabItem>
Expand All @@ -122,8 +122,8 @@ By default, a test will run when ANY parent is selected; we call this "eager" in
In this mode, any test that depends on unbuilt resources will raise an error.

```shell
$ dbt test --select orders
$ dbt build --select orders
dbt test --select orders
dbt build --select orders
```

</TabItem>
Expand All @@ -137,8 +137,8 @@ It will only include tests whose references are each within the selected nodes.
Put another way, it will prevent tests from running if one or more of its parents is unselected.

```shell
$ dbt test --select orders --indirect-selection=cautious
$ dbt build --select orders --indirect-selection=cautious
dbt test --select orders --indirect-selection=cautious
dbt build --select orders --indirect-selection=cautious
```

</TabItem>
Expand All @@ -152,8 +152,8 @@ It will only include tests whose references are each within the selected nodes (
This is useful in the same scenarios as "cautious", but also includes when a test depends on a model **and** a direct ancestor of that model (like confirming an aggregation has the same totals as its input).

```shell
$ dbt test --select orders --indirect-selection=buildable
$ dbt build --select orders --indirect-selection=buildable
dbt test --select orders --indirect-selection=buildable
dbt build --select orders --indirect-selection=buildable
```

</TabItem>
Expand All @@ -172,8 +172,8 @@ By default, a test will run when ANY parent is selected; we call this "eager" in
In this mode, any test that depends on unbuilt resources will raise an error.

```shell
$ dbt test --select orders
$ dbt build --select orders
dbt test --select orders
dbt build --select orders
```

</TabItem>
Expand All @@ -187,8 +187,8 @@ It will only include tests whose references are each within the selected nodes.
Put another way, it will prevent tests from running if one or more of its parents is unselected.

```shell
$ dbt test --select orders --indirect-selection=cautious
$ dbt build --select orders --indirect-selection=cautious
dbt test --select orders --indirect-selection=cautious
dbt build --select orders --indirect-selection=cautious
```

</TabItem>
Expand All @@ -202,8 +202,8 @@ It will only include tests whose references are each within the selected nodes (
This is useful in the same scenarios as "cautious", but also includes when a test depends on a model **and** a direct ancestor of that model (like confirming an aggregation has the same totals as its input).

```shell
$ dbt test --select orders --indirect-selection=buildable
$ dbt build --select orders --indirect-selection=buildable
dbt test --select orders --indirect-selection=buildable
dbt build --select orders --indirect-selection=buildable
```

</TabItem>
Expand All @@ -213,8 +213,8 @@ $ dbt build --select orders --indirect-selection=buildable
This mode will only include tests whose references are each within the selected nodes and will ignore all tests from attached nodes.

```shell
$ dbt test --select orders --indirect-selection=empty
$ dbt build --select orders --indirect-selection=empty
dbt test --select orders --indirect-selection=empty
dbt build --select orders --indirect-selection=empty
```

</TabItem>
Expand All @@ -234,22 +234,25 @@ The following examples should feel somewhat familiar if you're used to executing

```bash
# Run tests on a model (indirect selection)
$ dbt test --select customers
dbt test --select customers

# Run tests on two or more specific models (indirect selection)
dbt test --select customers orders

# Run tests on all models in the models/staging/jaffle_shop directory (indirect selection)
$ dbt test --select staging.jaffle_shop
dbt test --select staging.jaffle_shop

# Run tests downstream of a model (note this will select those tests directly!)
$ dbt test --select stg_customers+
dbt test --select stg_customers+

# Run tests upstream of a model (indirect selection)
$ dbt test --select +stg_customers
dbt test --select +stg_customers

# Run tests on all models with a particular tag (direct + indirect)
$ dbt test --select tag:my_model_tag
dbt test --select tag:my_model_tag

# Run tests on all models with a particular materialization (indirect selection)
$ dbt test --select config.materialized:table
dbt test --select config.materialized:table

```

Expand All @@ -258,16 +261,19 @@ The following examples should feel somewhat familiar if you're used to executing

```bash
# tests on all sources
$ dbt test --select source:*
dbt test --select source:*

# tests on one source
$ dbt test --select source:jaffle_shop
dbt test --select source:jaffle_shop

# tests on two or more specific sources
dbt test --select source:jaffle_shop source:raffle_bakery

# tests on one source table
$ dbt test --select source:jaffle_shop.customers
dbt test --select source:jaffle_shop.customers

# tests on everything _except_ sources
$ dbt test --exclude source:*
dbt test --exclude source:*
```

### More complex selection
Expand All @@ -276,10 +282,10 @@ Through the combination of direct and indirect selection, there are many ways to


```bash
$ dbt test --select assert_total_payment_amount_is_positive # directly select the test by name
$ dbt test --select payments,test_type:singular # indirect selection, v1.2
$ dbt test --select payments,test_type:data # indirect selection, v0.18.0
$ dbt test --select payments --data # indirect selection, earlier versions
dbt test --select assert_total_payment_amount_is_positive # directly select the test by name
dbt test --select payments,test_type:singular # indirect selection, v1.2
dbt test --select payments,test_type:data # indirect selection, v0.18.0
dbt test --select payments --data # indirect selection, earlier versions
```


Expand All @@ -288,13 +294,13 @@ Through the combination of direct and indirect selection, there are many ways to

```bash
# Run tests on all models with a particular materialization
$ dbt test --select config.materialized:table
dbt test --select config.materialized:table

# Run tests on all seeds, which use the 'seed' materialization
$ dbt test --select config.materialized:seed
dbt test --select config.materialized:seed

# Run tests on all snapshots, which use the 'snapshot' materialization
$ dbt test --select config.materialized:snapshot
dbt test --select config.materialized:snapshot
```

Note that this functionality may change in future versions of dbt.
Expand Down Expand Up @@ -322,7 +328,7 @@ models:


```bash
$ dbt test --select tag:my_column_tag
dbt test --select tag:my_column_tag
```

Currently, tests "inherit" tags applied to columns, sources, and source tables. They do _not_ inherit tags applied to models, seeds, or snapshots. In all likelihood, those tests would still be selected indirectly, because the tag selects its parent. This is a subtle distinction, and it may change in future versions of dbt.
Expand Down Expand Up @@ -350,5 +356,5 @@ models:


```bash
$ dbt test --select tag:my_test_tag
dbt test --select tag:my_test_tag
```