Web登錄測試是很常見的測試,手動測試大家再熟悉不過了,那如何進行自動化登錄測試呢!本文就基於python+selenium結合unittest單元測試框架來進行一次簡單但比較完整的cnblog自動化登錄測試,可提供點參考!下面就包括測試代碼和每種測試情況的截圖。
代碼如下:
1 ''' 2 cnblog的登錄測試,分下面幾種情況: 3 (1)用戶名、密碼正確 4 (2)用戶名正確、密碼不正確 5 (3)用戶名正確、密碼為空 6 (4)用戶名錯誤、密碼正確 7 (5)用戶名為空、密碼正確(還有用戶名和密碼均為空時與此情況是一樣的,這里就不單獨測試了) 8 ''' 9 import unittest 10 from selenium import webdriver 11 from time import sleep 12 13 class LoginCase(unittest.TestCase): 14 15 def setUp(self): 16 self.dr = webdriver.Chrome() 17 self.dr.maximize_window() 18 19 #定義登錄方法 20 def login(self, username, password): 21 self.dr.get('https://passport.cnblogs.com/user/signin') #cnblog登錄頁面 22 self.dr.find_element_by_id('input1').send_keys(username) 23 self.dr.find_element_by_id('input2').send_keys(password) 24 self.dr.find_element_by_id('signin').click() 25 26 def test_login_success(self): 27 '''用戶名、密碼正確''' 28 self.login('kemi_xxx', 'kemi_xxxx') #正確用戶名和密碼 29 sleep(3) 30 link = self.dr.find_element_by_id('lnk_current_user') 31 self.assertTrue('菜鳥可米' in link.text) #用assertTrue(x)方法來斷言 bool(x) is True 登錄成功后用戶昵稱在lnk_current_user里 32 self.dr.get_screenshot_as_file("D:\cnblogtest\\login_success.jpg") #截圖 可自定義截圖后的保存位置和圖片命名 33 34 def test_login_pwd_error(self): 35 '''用戶名正確、密碼不正確''' 36 self.login('kemi_xxx', 'kemi') #正確用戶名,錯誤密碼 37 sleep(2) 38 error_message = self.dr.find_element_by_id('tip_btn').text 39 self.assertIn('用戶名或密碼錯誤', error_message) #用assertIn(a,b)方法來斷言 a in b '用戶名或密碼錯誤'在error_message里 40 self.dr.get_screenshot_as_file("D:\cnblogtest\\login_pwd_error.jpg") 41 42 def test_login_pwd_null(self): 43 '''用戶名正確、密碼為空''' 44 self.login('kemi_xxx', '') #密碼為空 45 error_message = self.dr.find_element_by_id('tip_input2').text 46 self.assertEqual(error_message,'請輸入密碼') #用assertEqual(a,b)方法來斷言 a == b 請輸入密碼等於error_message 47 self.dr.get_screenshot_as_file("D:\cnblogtest\\login_pwd_null.jpg") 48 49 def test_login_user_error(self): 50 '''用戶名錯誤、密碼正確''' 51 self.login('kemixing', 'kemi_xxx') #密碼正確,用戶名錯誤 52 sleep(2) 53 error_message = self.dr.find_element_by_id('tip_btn').text 54 self.assertIn('該用戶不存在', error_message) #用assertIn(a,b)方法來斷言 a in b 55 self.dr.get_screenshot_as_file("D:\cnblogtest\\login_user_error.jpg") 56 57 def test_login_user_null(self): 58 '''用戶名為空、密碼正確''' 59 self.login('', 'kemi_xxx') #用戶名為空,密碼正確 60 error_message = self.dr.find_element_by_id('tip_input1').text 61 self.assertEqual(error_message,'請輸入登錄用戶名') #用assertEqual(a,b)方法來斷言 a == b 62 self.dr.get_screenshot_as_file("D:\cnblogtest\\login_user_null.jpg") 63 64 def tearDown(self): 65 sleep(2) 66 print('自動測試完畢!') 67 self.dr.quit() 68 69 if __name__ == '__main__': 70 unittest.main()
測試結果如下:
測試截圖如下:
正確用戶名和密碼登錄成功!
正確用戶名,錯誤密碼登錄失敗!
用戶名正確,密碼為空,登錄失敗!
用戶名錯誤,密碼正確,登錄失敗!
用記名為空,正確密碼,登錄失敗!