Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/legshort/apple-mango
Python BDD Pattern
https://github.com/legshort/apple-mango
bdd python3 tdd
Last synced: about 2 months ago
JSON representation
Python BDD Pattern
- Host: GitHub
- URL: https://github.com/legshort/apple-mango
- Owner: legshort
- License: mit
- Created: 2018-01-21T07:15:49.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2018-02-17T08:53:13.000Z (almost 7 years ago)
- Last Synced: 2024-11-16T00:19:44.399Z (about 2 months ago)
- Topics: bdd, python3, tdd
- Language: Python
- Size: 28.3 KB
- Stars: 18
- Watchers: 3
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Light weight BDD Pattern
## Installation
* `pip install apple-mango`## Goal
* Easy to Use
* Compatible with Python unittest
* Compatible with existing test code
* Support Python3## Next Step
* Register to pypi
* Add CI
* Support pytest## Usage
* Define regular test class
* Define regular test method with `@mango.given()`
* Define inner `when` method with `@mango.when()`
* Define inner `then` method with `@mango.then()`
* Run python test: `python -m unittest test_file.py`
* No need to call inner `when` and `then` method becuase `given(), when(), then()` decorators will take care of it### Example
```python
# test_exampel.pyclass MangoUseCase(TestCase):
def setUp(self):
self.user = 'jun'@mango.given('I am logged-in user')
def test_profile(self):
self.given.user_profile = 'my_profile'
self.given.user_photo = 'my_photo'self.given.notifications_count = 3
self.given.unread_notifications_count = 1@mango.when('I click profile')
def when_click_profile():
print('click')@mango.then('I see profile')
def then_profile():
self.assertEqual(self.given.user_profile, 'my_profile')@mango.then('I see my photo')
def then_photo():
self.assertEqual(self.given.user_photo, 'my_photo')@mango.when('I click notification')
def when_click_notification():
print('click')@mango.then('I see 3 notifications')
def then_notification():
self.assertEqual(self.given.notifications_count, 3)@mango.then('I see 1 unread notification')
def then_unread_notification():
self.assertEqual(self.given.unread_notifications_count, 1)@mango.given('I am logged-out user')
def test_auth(self):
self.given.status_code = 401@mango.when('I access profile by url')
def when_access_profile():
print('access profile')@mango.then('I see 401 error')
def then_error():
self.assertEqual(self.given.status_code, 401)```
### Run Example
```python
python -m unittest test_example.py
```## Contributing
### Run Test
```python
python -m unittest tests/test_mango.py
```