單元測試框架中測試用例的執行順序


一、用例用例全部執行與選擇執行

單元測試用例的執行順序按照定義的用例的名稱的編碼大小,從小到大依次執行,因此一般通過后綴001、002...等來規划測試用例的執行順序,例如:

import unittest

class F1(unittest.TestCase):
    def setUp(self):
        print('我已經做好了准備工作')

    def tearDown(self):
        print('已處理')

    def test_001(self):    #單獨執行其中的一個用例,鼠標放在這行里,右鍵點擊執行
        print('test001')

    def test_002(self):
        print('test002')

    def test_003(self):
        print('test003')

if __name__ == '__main__':
    unittest.main(verbosity=2)    #執行所有的用例,鼠標放在這行里,右鍵點擊執行

鼠標放到main方法中,右鍵選擇文件執行會執行所有的測試用例,結果為:

如果只執行其中的一條用例則鼠標放在這個用例的方法中右鍵選擇文件執行會只執行這一條用例

# 執行所有用例的運行結果
Testing started at 上午11:32 ...
/Users/ligaijiang/PycharmProjects/interfaceTest2/venv/bin/python /Applications/PyCharm.app/Contents/helpers/pycharm/_jb_unittest_runner.py --path /Users/ligaijiang/PycharmProjects/interfaceTest2/pythonstudying/unittest/ut1.py
Launching unittests with arguments python -m unittest /Users/ligaijiang/PycharmProjects/interfaceTest2/pythonstudying/unittest/ut1.py in /Users/ligaijiang/PycharmProjects/interfaceTest2/pythonstudying/unittest
我已經做好了准備工作
test001
已處理
我已經做好了准備工作
test002
已處理
我已經做好了准備工作
test003
已處理


Ran 3 tests in 0.002s

OK

Process finished with exit code 0

 

二、單元測試用例的執行順序

執行以下測試用例,會先執行map再執行news,雖然news寫在來前面

import unittest
from selenium import webdriver
import time

class F3(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.maximize_window()
        self.driver.implicitly_wait(30)
        self.driver.get('https://www.baidu.com/')


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

    def test_baidu_news(self):
        self.driver.find_element_by_link_text('新聞').click()
        time.sleep(5)

    def test_baidu_map(self):
        self.driver.find_element_by_partial_link_text('').click()
        time.sleep(5)

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

通過驗證可以發現m的編碼為109,n的編碼為110,因此先執行的m開頭的,再執行的n開頭的

Last login: Wed May 13 17:33:51 on ttys004
(base) localhost:~ ligaijiang$ python
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 26 2018, 23:26:24) 
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> ord('n')
110
>>> ord('m')
109
>>> 

 

三、單元測試用例使用套件控制瀏覽器的打開次數

以下方式,瀏覽器會只打開一次,執行兩個測試用例后關閉一次,結束:

import unittest
from selenium import webdriver
import time


class F2(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.driver=webdriver.Firefox()
        cls.driver.maximize_window()
        cls.driver.implicitly_wait(30)
        cls.driver.get('https://www.baidu.com/')

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()

    def test_baidu_news_001(self):
        self.driver.find_element_by_link_text('新聞').click()
        time.sleep(10)
        self.driver.back()


    def test_baidu_map_002(self):
        self.driver.find_element_by_partial_link_text('').click()
        time.sleep(15)
        self.driver.back()

if __name__ == '__main__':
    unittest.main(verbosity=2)    #如何執行所有的用例

以下方式,瀏覽器會打開一次,執行用例001,關閉;瀏覽器再次打開,執行用例002,關閉

import unittest
from selenium import webdriver
import time

class F3(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.maximize_window()
        self.driver.implicitly_wait(30)
        self.driver.get('https://www.baidu.com/')


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

    def test_baidu_news_001(self):
        self.driver.find_element_by_link_text('新聞').click()
        time.sleep(5)

    def test_baidu_map_002(self):
        self.driver.find_element_by_partial_link_text('').click()
        time.sleep(5)

if __name__ == '__main__':
    unittest.main(verbosity=2)  # 如何執行所有的用例

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM