From 936fbf30f6bb318b38a8624f2695948237f19ff3 Mon Sep 17 00:00:00 2001 From: Joachim Lusiardi Date: Sat, 28 May 2016 18:59:23 +0200 Subject: [PATCH] worked on tests --- .gitignore | 1 + tests/app/main.py | 51 ++++++++++++++++++++++++------ tests/results/rollerverbrauch.png | Bin 39078 -> 0 bytes tests/run_test.sh | 1 + 4 files changed, 43 insertions(+), 10 deletions(-) delete mode 100644 tests/results/rollerverbrauch.png diff --git a/.gitignore b/.gitignore index 45c35c9..de7e95b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .idea/ +tests/results/ **.DS_Store **.swp **.pyc diff --git a/tests/app/main.py b/tests/app/main.py index 7c11296..bce4fa3 100644 --- a/tests/app/main.py +++ b/tests/app/main.py @@ -49,8 +49,25 @@ def wait_net_service(server, port, timeout=None): return True -class PythonOrgSearch(unittest.TestCase): +class BaseTestCase(unittest.TestCase): + def setUp(self): + self.screen_shot_counter = 0 + self.driver = webdriver.Remote( + command_executor='http://selenium:4444/wd/hub', + desired_capabilities=DesiredCapabilities.FIREFOX) + self.driver.get("http://rollerverbrauch:5000") + WebDriverWait(self.driver, 10).until(expected_conditions.presence_of_element_located((By.ID, "email"))) + def create_screenshot(self): + self.driver.get_screenshot_as_file( + '/results/%s_%s_%s.png' % (self.__class__.__name__, inspect.stack()[1][3], str(self.screen_shot_counter))) + self.screen_shot_counter += 1 + + def tearDown(self): + self.driver.close() + + +class RegisterCheck(BaseTestCase): def setUp(self): self.screen_shot_counter = 0 self.driver = webdriver.Remote( @@ -62,7 +79,7 @@ class PythonOrgSearch(unittest.TestCase): def test_page_loads(self): self.driver.get("http://rollerverbrauch:5000") self.create_screenshot() - assert "refuel" in self.driver.title + self.assertIn("refuel", self.driver.title, "Title must contain reload") def test_can_register(self): self.driver.get("http://rollerverbrauch:5000") @@ -84,22 +101,36 @@ class PythonOrgSearch(unittest.TestCase): self.create_screenshot() WebDriverWait(self.driver, 10).until(expected_conditions.presence_of_element_located((By.ID, "submit"))) self.create_screenshot() - self.driver.find_element_by_id('email').send_keys('test@test.com') + self.driver.find_element_by_id('email').send_keys('test1@test.com') self.driver.find_element_by_id('password').send_keys('test123') self.create_screenshot() self.driver.find_element_by_id('submit').click() self.create_screenshot() error = self.driver.find_elements_by_class_name('error') - assert error is not None + self.assertIsNotNone(error[0], 'we expect an error') + self.assertIn('Passwords do not match', error[0].text, 'wrong error message') - def create_screenshot(self): - print(self.__class__.__name__, inspect.stack()[1][3]) - self.driver.get_screenshot_as_file('/results/%s_%s_%s.png' % (self.__class__.__name__, inspect.stack()[1][3], str(self.screen_shot_counter))) - self.screen_shot_counter += 1 + def test_register_must_be_equal_pwd(self): + self.driver.get("http://rollerverbrauch:5000") + self.driver.find_element_by_partial_link_text('Register').click() + self.create_screenshot() + WebDriverWait(self.driver, 10).until(expected_conditions.presence_of_element_located((By.ID, "submit"))) + self.create_screenshot() + self.driver.find_element_by_id('email').send_keys('test1@test.com') + self.driver.find_element_by_id('password').send_keys('test123') + self.driver.find_element_by_id('password_confirm').send_keys('test1234') + self.create_screenshot() + self.driver.find_element_by_id('submit').click() + self.create_screenshot() + error = self.driver.find_elements_by_class_name('error') + self.assertIsNotNone(error[0], 'we expect an error') + self.assertIn('Passwords do not match', error[0].text, 'wrong error message') - def tearDown(self): - self.driver.close() +class LoginCheck(BaseTestCase): + + def can_login(self): + pass if __name__ == "__main__": wait_net_service('selenium', 4444) diff --git a/tests/results/rollerverbrauch.png b/tests/results/rollerverbrauch.png deleted file mode 100644 index 5e5a3d68b74a483348f74ede6ccc8db4245592bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39078 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 diff --git a/tests/run_test.sh b/tests/run_test.sh index eac53a8..469018e 100755 --- a/tests/run_test.sh +++ b/tests/run_test.sh @@ -1,5 +1,6 @@ #!/bin/bash +rm -f results/* docker-compose build docker-compose up --abort-on-container-exit docker-compose down