Scaffolded and added readmes for testing work
This commit is contained in:
		
							parent
							
								
									863ae3496a
								
							
						
					
					
						commit
						1d0a0c1c17
					
				|  | @ -38,6 +38,8 @@ requests==2.25.1 | |||
| requests-toolbelt==0.9.1 | ||||
| rq==1.9.0 | ||||
| selenium | ||||
| behave | ||||
| webdriver_manager | ||||
| six==1.16.0 | ||||
| SQLAlchemy==1.4.20 | ||||
| urllib3==1.26.6 | ||||
|  |  | |||
|  | @ -0,0 +1,17 @@ | |||
| Feature: Add tasks to todo list | ||||
|   As a user | ||||
|   I want to be able to add tasks to my todo list | ||||
|   So thats I can keep track of my work | ||||
| 
 | ||||
|   Scenario: User visits the todo list page | ||||
|     Given the user is on the todo list page | ||||
|     Then the page should have a text field to enter the title of the task | ||||
|     And the page should have a text field to enter the estimate of hours needed to complete the task | ||||
|     And the page should have a button to add the task | ||||
| 
 | ||||
|   Scenario: Add a new task to the todo list | ||||
|         Given I am on the todo list page | ||||
|         When I enter "Buy groceries" in the title field | ||||
|         And I enter "2" in the estimate field | ||||
|         And I click the "Add" button | ||||
|         Then the task "Buy groceries" with estimate "2" should be added to the todo list | ||||
|  | @ -0,0 +1,5 @@ | |||
| How to run behave tutorial | ||||
| 
 | ||||
| 1. Running all behave features | ||||
| 
 | ||||
| run " behave tests/features/add-task.feature " | ||||
|  | @ -0,0 +1,38 @@ | |||
| from behave import * | ||||
| from webdriver_manager.chrome import ChromeDriverManager | ||||
| from selenium import webdriver | ||||
| from selenium.webdriver.chrome.service import Service as ChromeService | ||||
| from selenium.webdriver.common.by import By | ||||
| 
 | ||||
| @given(u'I am on the todo list page') | ||||
| def open_browser(context): | ||||
|     context.driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install())) | ||||
|     context.driver.implicitly_wait(5) | ||||
|     context.driver.get("http://127.0.0.1:5000/") | ||||
| 
 | ||||
| 
 | ||||
| @when('I enter "{title}" in the title field') | ||||
| def step_impl(context, title): | ||||
|     title_field = context.driver.find_element(By.NAME, "title") | ||||
|     title_field.send_keys(title) | ||||
| 
 | ||||
| 
 | ||||
| @when('I enter "{estimate}" in the estimate field') | ||||
| def step_impl(context, estimate): | ||||
|     estimate_field = context.driver.find_element(By.NAME, "estimate") | ||||
|     estimate_field.send_keys(estimate) | ||||
| 
 | ||||
| 
 | ||||
| @when(u'I click the "Add" button') | ||||
| def step_impl(context): | ||||
|     add_button = context.driver.find_element(By.XPATH, "//button[contains(text(),'Add')]") | ||||
|     add_button.click() | ||||
|     context.driver.implicitly_wait(5) | ||||
| 
 | ||||
| 
 | ||||
| @then('the task "{title}" with estimate "{estimate}" should be added to the todo list') | ||||
| def step_impl(context, title, estimate): | ||||
|     dump_text = context.driver.page_source | ||||
|     print(dump_text) | ||||
|     assert ("Buy groceries | 2" in dump_text) is True | ||||
| 
 | ||||
|  | @ -0,0 +1,30 @@ | |||
| from behave import * | ||||
| from webdriver_manager.chrome import ChromeDriverManager | ||||
| from selenium import webdriver | ||||
| from selenium.webdriver.chrome.service import Service as ChromeService | ||||
| from selenium.webdriver.common.by import By | ||||
| 
 | ||||
| 
 | ||||
| @given(u'the user is on the todo list page') | ||||
| def open_browser(context): | ||||
|     context.driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install())) | ||||
|     context.driver.implicitly_wait(5) | ||||
|     context.driver.get("http://127.0.0.1:5000/") | ||||
| 
 | ||||
| 
 | ||||
| @then(u'the page should have a text field to enter the title of the task') | ||||
| def check_task_title_textbox(context): | ||||
|     status = context.driver.find_element(By.NAME, "title").is_displayed() | ||||
|     assert status is True | ||||
| 
 | ||||
| 
 | ||||
| @then(u'the page should have a text field to enter the estimate of hours needed to complete the task') | ||||
| def check_task_estimate_textbox(context): | ||||
|     status = context.driver.find_element(By.NAME, "estimate").is_displayed() | ||||
|     assert status is True | ||||
| 
 | ||||
| 
 | ||||
| @then(u'the page should have a button to add the task') | ||||
| def check_task_add_button(context): | ||||
|     status = context.driver.find_element(By.XPATH, "//button[contains(text(),'Add')]").is_displayed() | ||||
|     assert status is True | ||||
|  | @ -0,0 +1,11 @@ | |||
| How to run unit tests | ||||
| 
 | ||||
| unit tests must follow the "test*.py" regex to be picked up | ||||
| 
 | ||||
| 1. Individual tests | ||||
| 
 | ||||
| run " python .\tests\unit\test_example.py " | ||||
| 
 | ||||
| 2. Run all unit tests | ||||
| 
 | ||||
| run "  python -m unittest discover -s ./tests/unit " | ||||
|  | @ -1,4 +1,7 @@ | |||
| #!/usr/bin/env python | ||||
| import sys | ||||
| sys.path.append('./') | ||||
| 
 | ||||
| from datetime import datetime, timedelta | ||||
| import unittest | ||||
| from app import create_app, db | ||||
		Loading…
	
		Reference in New Issue