Example of a Test Suite | MuleSoft Documentation
# Example of a Test Suite
To see the content of an example test suite, in a terminal create a directory in your computer’s filesystem. Then, change to that directory and run the `bat init` command. The command creates these folders and files:
```
.
├── bat.yaml
├── config
│   ├── default.dwl
│   ├── devx.dwl
│   ├── qax.dwl
│   └── stgx.dwl
└── tests
  └── HelloWorld.dwl
```

The `bat.yaml` file is the main file for the test suite. This example contains these lines:
```
suite:
 name: "Hello World Suite"
files:
 - file: tests/HelloWorld.dwl
reporters:
  - type: HTML
   outFile: /tmp/HTML.html
 # - type: SumoLogic
 #  options:
 #   SUMO_ENDPOINT: <sumo_source>
 # - type: PagerDuty
 #  options:
 #   PAGER_DUTY_ROUTING_KEY: <routing_key>
 # - type: Slack
 #  options:
 #   SLACK_WEBHOOK: <webhook_url>
 # - type: Email
 #  options:
 #   EMAILS: <email_list>
 # - type: NewRelic
 #  options:
 #   NEW_RELIC_LICENSE_KEY: <license_key>
 # - type: JSON
 #  outFile: /tmp/JSON.json
 # - type: JUnit
 #  outFile: /tmp/JUnit.xml
```

Every test suite must contain a `bat.yaml` file at its root level.
## The `suite` Section of the example `bat.yaml` File
The `suite` section names the suite. You can use any names that you like for the suites that you write.
## The `files` Section of the example `bat.yaml` File
This example test suite contains only one test. The test is listed in the `files` section as the file `HelloWorld.dwl` in the `tests` folder.
As you create tests, you add references to them in your `bat.yaml` file. For example, suppose that in your test-suite directory you create a folder named `api-tests` and write a test named `first-test.dwl` in that folder. In the `files` section of your `bat.yaml` file, you add the following indented line:
```
 file: api-tests/first-test.dwl
```

If you write a second test, this one named `second-test.dwl`, you add this line next:
```
 file: api-tests/second-test.dwl
```

The order in which you list the tests determines the order in which the BAT CLI runs them. In this example, the test `orderFulfillment.dwl` runs before the test `shoppingCart.dwl`:
```
files:
 file: retail-site-tests/orderFulfillment.dwl
 file: retail-site-tests/shoppingCart.dwl
```

To run the `orderFulfillment.dwl` test after the `shoppingCart.dwl` test, you can change the order in which they are listed:
```
files:
 file: retail-site-tests/shoppingCart.dwl
 file: retail-site-tests/orderFulfillment.dwl
```

Finally, you can create more than one folder to contain the tests in a test suite. You can even create subfolders within the folders that contain your tests. Just be sure that you provide the correct relative path when you list a test in the `files` section of your `bat.yaml` file.
## The `reporters` Section of the `bat.yaml` File
This section is for configuring various tools or third-party applications to report test failures. In this example, a failure of the `HelloWorld.dwl` test prompts the BAT CLI to write a report of the failure to the file `/tmp/HTML.html`. For information about setting up reports, see Configure and View Test Reports.
## The `secrets` Section of the `bat.yaml` File
If you plan to run a test suite from a private location, you can use the BAT CLI’s integration with Anypoint Secrets Manager to use shared secrets in your tests.
## The `config` Folder
You can store variables in the files in the `config` folder. For example, suppose that you’re developing an API and you deploy it to two different environments: `dev` and `qa`. The endpoint URL for the first is `dev.myapi.com` and for the second `qa.myapi.com`. The API is intended to behave the same in both environments.
You want to test the API in both environments. However, instead of coding two tests, one for the deployment of the API in `dev` and one for the deployment of the API in `qa`, you can create a configuration file for each environment. In each configuration file, you can place a variable named `url` that holds that endpoint URL for the corresponding environment:
The content of `dev.dwl`, the configuration file for the `dev` environment
```
{
url: "dev.myapi.com"
}
```

The content of `qa.dwl`, the configuration file for the `qa` environment
```
{
url: "qa.myapi.com"
}
```

In your test, you can use the `url` variable by placing it within this syntax: `$(config.variable)`, where _variable_ is the name of the variable that you want to use. Here is an example test that uses the `url` variable in a `GET` request to test the assertion that the response code must be 200:
```
import * from bat::BDD
import * from bat::Assertions
---
suite("Hello world suite") in [
 it must 'answer 200' in [
  GET `$(config.url)` with {} assert [
   $.response.status mustEqual 200
  ]
 ]
]
```

When you run the test, you can use the `--config` parameter to specify which configuration file to use. (If you upload your test suite as a monitor to API Functional Monitoring in Anypoint Platform, you can specify the configuration to use when you create a schedule for the monitor.)
Use JSON for the format of your configuration files, and `.dwl` as the file extension. You can put as many variables as you need in each file.
## The `tests` Folder
In the example test suite, the test `HelloWorld.dwl` is in a folder named `tests`. As explained in the section about the `bat.yaml` file in this example, the `files` section in the `bat.yaml` file points to the tests in a test suite.
```
files:
 - file: tests/HelloWorld.dwl
```

In your own test suites, the folders that contain your tests can have any name that is valid for your filesystem. You can also place tests in multiple folders.