一次完整的自動化登錄測試-基於python+selenium進行cnblog的自動化登錄測試

Web登錄測試是很常見的測試!手動測試大家再熟悉不過了,那如何進行自動化登錄測試呢!本文作者就用python+selenium結合unittest單元測試框架來進行一次簡單但比較完整的cnblog自動化登錄測試,給大家提供點參考!下面就包括測試代碼和每種測試情況的截圖:

'''
cnblog的登錄測試,分下面幾種情況:
(1)用戶名、密碼正確
(2)用戶名正確、密碼不正確
(3)用戶名正確、密碼爲空
(4)用戶名錯誤、密碼正確
(5)用戶名爲空、密碼正確(還有用戶名和密碼均爲空時與此情況是一樣的,這裏就不單獨測試了)
'''
import unittest
from selenium import webdriver
from time import sleep

class LoginCase(unittest.TestCase):

    def setUp(self):
        self.dr = webdriver.Chrome()
        self.dr.maximize_window()

    #定義登錄方法
    def login(self, username, password):
        self.dr.get('https://passport.cnblogs.com/user/signin')  #cnblog登錄頁面
        self.dr.find_element_by_id('input1').send_keys(username)
        self.dr.find_element_by_id('input2').send_keys(password)
        self.dr.find_element_by_id('signin').click()

    def test_login_success(self):
        '''用戶名、密碼正確'''
        self.login('kemi_xxx', 'kemi_xxxx') #正確用戶名和密碼
        sleep(3)
        link = self.dr.find_element_by_id('lnk_current_user')
        self.assertTrue('菜鳥可米' in link.text)   #用assertTrue(x)方法來斷言  bool(x) is True 登錄成功後用戶暱稱在lnk_current_user裏
        self.dr.get_screenshot_as_file("D:\cnblogtest\\login_success.jpg")  #截圖  可自定義截圖後的保存位置和圖片命名

    def test_login_pwd_error(self):
        '''用戶名正確、密碼不正確'''
        self.login('kemi_xxx', 'kemi')  #正確用戶名,錯誤密碼
        sleep(2)
        error_message = self.dr.find_element_by_id('tip_btn').text
        self.assertIn('用戶名或密碼錯誤', error_message)  #用assertIn(a,b)方法來斷言 a in b  '用戶名或密碼錯誤'在error_message裏
        self.dr.get_screenshot_as_file("D:\cnblogtest\\login_pwd_error.jpg")

    def test_login_pwd_null(self):
        '''用戶名正確、密碼爲空'''
        self.login('kemi_xxx', '')  #密碼爲空
        error_message = self.dr.find_element_by_id('tip_input2').text
        self.assertEqual(error_message,'請輸入密碼')  #用assertEqual(a,b)方法來斷言  a == b  '請輸入密碼'等於error_message
        self.dr.get_screenshot_as_file("D:\cnblogtest\\login_pwd_null.jpg")

    def test_login_user_error(self):
        '''用戶名錯誤、密碼正確'''
        self.login('kemixing', 'kemi_xxx')  #密碼正確,用戶名錯誤
        sleep(2)
        error_message = self.dr.find_element_by_id('tip_btn').text
        self.assertIn('該用戶不存在', error_message)  #用assertIn(a,b)方法來斷言 a in b
        self.dr.get_screenshot_as_file("D:\cnblogtest\\login_user_error.jpg")

    def test_login_user_null(self):
        '''用戶名爲空、密碼正確'''
        self.login('', 'kemi_xxx')  #用戶名爲空,密碼正確
        error_message = self.dr.find_element_by_id('tip_input1').text
        self.assertEqual(error_message,'請輸入登錄用戶名')  #用assertEqual(a,b)方法來斷言  a == b
        self.dr.get_screenshot_as_file("D:\cnblogtest\\login_user_null.jpg")

    def tearDown(self):
        sleep(2)
        print('自動測試完畢!')
        self.dr.quit()

if __name__ == '__main__':
    unittest.main()

測試結果如下:

測試截圖效果如下:

正確用戶名和密碼登錄成功!

spacer.gif

正確用戶名,錯誤密碼登錄失敗!

用戶名正確,密碼爲空,登錄失敗!

用戶名錯誤,密碼正確,登錄失敗!

用記名爲空,正確密碼,登錄失敗!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章