50 lines
1.1 KiB
Markdown
50 lines
1.1 KiB
Markdown
# Behaviour Specifications
|
|
|
|
All features are documented as Gherkin scenarios that serve as both tests and documentation.
|
|
|
|
## CLI Features
|
|
|
|
### Default Greeting
|
|
|
|
```gherkin
|
|
Scenario: Default greeting
|
|
When I run "python -m boilerplate"
|
|
Then the exit code should be 0
|
|
And the output should contain "Hello, World!"
|
|
```
|
|
|
|
### Custom Name Greeting
|
|
|
|
```gherkin
|
|
Scenario: Custom name greeting
|
|
When I run "python -m boilerplate --name Alice"
|
|
Then the exit code should be 0
|
|
And the output should contain "Hello, Alice!"
|
|
```
|
|
|
|
### Multiple Greetings
|
|
|
|
```gherkin
|
|
Scenario: Multiple greetings
|
|
When I run "python -m boilerplate --count 3"
|
|
Then the exit code should be 0
|
|
And the output should contain "Hello, World!" 3 times
|
|
```
|
|
|
|
## Fuzz Testing
|
|
|
|
We use Hypothesis to ensure our CLI handles edge cases:
|
|
|
|
```gherkin
|
|
@hypothesis
|
|
Scenario: Fuzz test greeting names
|
|
When I fuzz test the CLI with random names
|
|
Then all invocations should succeed
|
|
```
|
|
|
|
This runs 1000+ test cases with randomly generated inputs including:
|
|
- Empty strings
|
|
- Unicode characters
|
|
- Emojis
|
|
- Very long strings
|
|
- Special characters |