Yet Another Testing Language
Project description
YATL — Yet Another Testing Language
YATL is a declarative, YAML‑based testing language for API testing. If you know HTTP and YAML, you know YATL.
Quick start
pip install yatl-testing
Create your first test file ping.yatl.yaml:
name: ping
base_url: google.com
steps:
- name: simple_test
request:
method: GET
expect:
status: 200
Run it:
yatl .
That’s it!
Why YATL?
Writing API tests in code is cumbersome. YATL turns tests into pure data — declarative, readable, and accessible to every team member.
The Problem
- You have to write code – even for a simple GET request
- High entry barrier – need to know programming languages well
- Complex dependencies – chaining requests becomes spaghetti code
- Hard to maintain – tests become unreadable over time
The Solution
YATL is a domain‑specific language that lets you describe API tests in clean YAML. No imperative code, no hidden magic.
If you know HTTP and YAML, you know YATL.
Key Features
- Declarative syntax – describe what to test, not how
- Data extraction & templating – use Jinja2 to reuse response data
- Multiple data formats – JSON, XML, form data, multipart files
- Parallel execution – run tests in parallel with
--workers - Skip tests & steps – disable tests without deleting them
- Advanced validation – validate with rules like
gt,regex,type
Example
name: User API
base_url: https://api.example.com
steps:
- name: login
request:
method: POST
url: /auth/login
body:
json:
username: "test"
password: "secret"
expect:
status: 200
extract:
token: "response.access_token"
- name: get_profile
request:
method: GET
url: /profile
headers:
Authorization: "Bearer {{ token }}"
expect:
status: 200
Usage
Running Tests
# Run all `.yatl.yaml` files in a directory
yatl .
# Run with 5 parallel workers on `tests/` directory
yatl tests/ --workers 5
Writing Tests
Every YATL test is a YAML file with a .yatl.yaml extension. The structure is simple:
name: Test Suite Name
base_url: https://api.example.com
steps:
- name: step_one
request:
method: GET
url: /endpoint
expect:
status: 200
body:
json:
field: "expected_value"
See the full documentation for all available options.
Documentation
Full documentation is available in the docs/ directory:
CI/CD Integration
YATL fits seamlessly into CI pipelines. Example GitHub Actions workflow:
- name: Run YATL tests
run: yatl tests/ --workers 5
If you find this project useful, please star it on GitHub. It really motivates me! ⭐️
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yatl_testing-0.1.3.tar.gz.
File metadata
- Download URL: yatl_testing-0.1.3.tar.gz
- Upload date:
- Size: 14.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec5c1d2d92543e3de2815c136425c210e32bf0eb3ca42822bf33bbec2334d696
|
|
| MD5 |
7593acd32b65c234312cf3510b170cfb
|
|
| BLAKE2b-256 |
1a23259cfc31d2a71f4cef9a664b10646f05d6e5ab8d3097f267757b87bf74ce
|
File details
Details for the file yatl_testing-0.1.3-py3-none-any.whl.
File metadata
- Download URL: yatl_testing-0.1.3-py3-none-any.whl
- Upload date:
- Size: 17.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
319ebdb4ab12a482cdf6b5923f82bcb9eb83571e87de27f1adecf29a93df73d3
|
|
| MD5 |
c28b75dd3222fc9e27f86d5c6d8bec96
|
|
| BLAKE2b-256 |
96d5941ed9e5026f4f533f15dda71f07ac826f169337573c6f05d3fb30686a30
|