-
Notifications
You must be signed in to change notification settings - Fork 0
/
function_tests.py
58 lines (45 loc) · 2 KB
/
function_tests.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import unittest
class NewVisitorTest(unittest.TestCase):
def setUp(self):
self.browser = webdriver.Firefox()
def tearDown(self):
self.browser.quit()
def check_for_row_in_list_table(self, row_text):
pass
def test_can_start_a_list_and_retrieve_it_later(self):
# user checking homepage
self.browser.get('http://localhost:8000')
# user notices page title and header mention to-do list
self.assertIn('To-Do', self.browser.title)
header_text = self.browser.find_element_by_tag_name('h1').text
self.assertIn('To-Do', header_text)
# user is invited to enter a todo item
inputbox = self.browser.find_element_by_id('id_new_item')
self.assertEqual(
inputbox.get_attribute('placeholder'),
'Enter a to-do item'
)
# user types "Buy peacock feathers" into a text box
# user hits enter, the page updates, and now shows the page lists
inputbox.send_keys('Buy peacock feathers')
inputbox.send_keys(Keys.ENTER)
time.sleep(1)
# user hits enter, the page updates again, and now shows the page lists
inputbox = self.browser.find_element_by_id('id_new_item')
inputbox.send_keys('Use peacock feathers to make a fly')
inputbox.send_keys(Keys.ENTER)
time.sleep(1)
table = self.browser.find_element_by_id('id_list_table')
rows = table.find_elements_by_tag_name('tr')
self.assertIn('1: Buy peacock feathers', [row.text for row in rows])
self.assertIn('2: Use peacock feathers to make a fly', [row.text for row in rows])
# text box is still available for user to add another item
# user enters "Use peacock feathers to make a fly"
self.fail('Finish the test!')
# page updates again, and now shows both items
[...]
if __name__ == '__main__':
unittest.main(warnings='ignore')