1. 程式人生 > >selenium之unittest的簡單用法(二)

selenium之unittest的簡單用法(二)

一、unittest 的執行順序

很多初學者在使用 unittest 框架時候,不清楚用例的執行順序到底是怎樣的。
對測試類裡面的類和方法分不清楚,不知道什麼時候執行,什麼時候不執行。
本篇通過最簡單案例詳細講解 unittest 執行順序。

二、案例分析

1.先定義一個測試類,裡面寫幾個簡單的 case

#-*- coding:utf-8 -*-  
import unittest  
from selenium import webdriver  
from selenium.webdriver.support import expected_conditions as
EC import time class Test(unittest.TestCase): def setUp(self): print "開始" def tearDown(self): time.sleep(1) print "結束" def test01(self): print "01測試" def test02(self): print "02測試" def testadd(self): print "add方法"
def test03(self): print "03測試" if __name__ == '__main__': unittest.main()

2.執行結果:

C:\Python27\python.exe F:/pycharm-workspace/Django_Test/test2.py  
開始  
01測試  
結束  
開始  
02測試  
..結束  
開始  
03測試  
.結束  
開始  
add方法  
.  
----------------------------------------------------------------------  
Ran
4 tests in 4.001s OK 結束 Process finished with exit code 0

3.結果分析

1).執行順序:
開始-執行測試用例 01-結束
開始-執行測試用例 02-結束
開始-執行測試用例 03-結束

開始-執行測試用例add方法-結束

2).從執行結果可以看出幾點
–先執行的前置 setUp,然後執行的用例(test*),最後執行的後置 tearDown
–測試用例(test*)的執行順序是根據 01-02-03 執行的,也就是說根據用例名稱來順序執行的

三、selenium 例項

#-*- coding:utf-8 -*-  
import unittest  
from selenium import webdriver  
from selenium.webdriver.support import expected_conditions as EC  
import time  

class bolg(unittest.TestCase):  
    u'''登入部落格'''  
    def setUp(self):  
        self.driver = webdriver.Chrome()  
        self.driver.get("https://passport.csdn.net/?service=http://write.blog.csdn.net/postedit?ref=toolbar")  
        self.driver.implicitly_wait(10)  
    def login(self,username,password):  
        u'''這裡寫一個登入的方法,賬號和密碼引數化'''  
        self.driver.find_element_by_id('username').send_keys(username)  
        self.driver.find_element_by_id('password').send_keys(password)  
        self.driver.find_element_by_class_name('logging').click()  
        time.sleep(2)  
    def is_login_sucess(self):  
        u'''判斷是否獲取到登入賬號'''  
        try:  
            text = self.driver.find_element_by_class_name('user_name').text  
            print text  
            return True  
        except:  
            return False  
    def test_01(self):  
        u'''登入案例參考:賬號,密碼'''  
        self.login('MTbaby','123456') #呼叫登入方法  
        #判斷結果  
        result = self.is_login_sucess()  
        self.assertTrue(result)  
    def test_02(self):  #這裡寫兩遍的目的是為了說明裝飾器的好處,具體在後面的文字會涉及
        u'''登入案例參考:賬號,密碼'''  
        self.login('MTbaby','123456')  
        result = self.is_login_sucess()  
        self.assertTrue(result)  

    def tearDown(self):  
        self.driver.quit()  

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

執行結果:

C:\Python27\python.exe F:/pycharm-workspace/Django_Test/test2.py  
MTbabyMTbaby的部落格  
.MTbabyMTbaby的部落格  
.  
----------------------------------------------------------------------  
Ran 2 tests in 90.184s  

OK  

Process finished with exit code 0