A Python Unittest Class consist of 3 basic functions.
def setUp(self): => it is first function running before test cases. generally, define Class-wide objects/variables such as drvier, timeout settings etc..
def test_xxx(self): => it is test case function that to be running. test case functions in unittest shoud start with “test_”
def tearDown(self): => it is running after each test case function to clean/destroy variables. for ex: driver.close()
as you can see, to write a test case, you should define a function start with “test_”. in one class, you can define more than one function. Generally, for each module to be tested, define all in same class.
you can see following code, there are 2 test cases and one will be passed and one will be failed. you can see from their name which one is.
# -*- coding: UTF-8 -*- import unittest from selenium import webdriver class TestClass(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.implicitly_wait(20) self.driver.set_page_load_timeout(20) self.driver.maximize_window() def test_MahsumAkbasNet_Pass(self): self.driver.get("http://www.mahsumakbas.net") headerTitle = self.driver.find_element_by_xpath("//a[@class='site-description']").text self.assertEqual(headerTitle, "A Blog For Software Testing and Automation", "Title is wrong") def test_MahsumAkbasNet_Fail(self): self.driver.get("http://www.mahsumakbas.net") headerTitle = self.driver.find_element_by_xpath("//a[@class='site-description']").text self.assertEqual(headerTitle, "Lorem ipsum dolor sit amet", "Title is wrong") def tearDown(self): self.driver.close() if __name__ == '__main__': unittest.main()
output will be:
F.
======================================================================
FAIL: test_MahsumAkbasNet_Fail (__main__.TestClass)
———————————————————————-
Traceback (most recent call last):
File “D:\xxx\src\unittestpackage\mahsumakbasnetUnittest.py”, line 23, in test_MahsumAkbasNet_Fail
self.assertEqual(headerTitle, “Lorem ipsum dolor sit amet”, “Title is wrong”)
AssertionError: Title is wrong———————————————————————-
Ran 2 tests in 23.497sFAILED (failures=1)
first line of output F. mean, there is two test case. “F” is “FAILED”. The dot(.) sign mean, one is PASSED