. ├── bat.yaml ├── config │ ├── default.dwl │ ├── devx.dwl │ ├── qax.dwl │ └── stgx.dwl └── tests └── HelloWorld.dwl
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:
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:
dev.dwl
, the configuration file for the dev
environment{ url: "dev.myapi.com" }
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.