Python Unittest根據(jù)不同測(cè)試環(huán)境跳過(guò)用例的方法
前言
在利用單元測(cè)試框架執(zhí)行測(cè)試用例的過(guò)程中,有時(shí)只需要執(zhí)行一部分用例,或者跳過(guò)某些暫不需要執(zhí)行的用例,python的unittest框架就內(nèi)置這樣的功能。
本文章會(huì)講述以下幾個(gè)內(nèi)容:
1、Unittest 如何跳過(guò)用例
2、如何使用sys.argv
3、自動(dòng)化測(cè)試項(xiàng)目中如何一套代碼多套環(huán)境運(yùn)行
一、Unittest跳過(guò)用例
- @unittest.skip(reason) , 直接跳過(guò)被裝飾的用例 ,reason用于填寫(xiě)跳過(guò)用例的原因
- @unittest.skipIf(condition, reason) , condition 如果為真,跳過(guò)被裝飾的用例,reason用于填寫(xiě)跳過(guò)用例的原因
- @unittest.skipUnless(condition, reason) , condition如果為假,跳過(guò)被裝飾的用例,reason用于填寫(xiě)跳過(guò)用例的原因
例:
test_case_skip.py
# encoding:utf8 import unittest class SkipExample(unittest.TestCase): @unittest.skip('用例 1 無(wú)條件跳過(guò)') def test_case_one(self): print('---用例 1 ---') @unittest.skipIf(2 > 1, '條件為T(mén)rue ,用例2 跳過(guò)') def test_case_two(self): print('---用例 2 ---') @unittest.skipUnless(2 < 1, '條件為False, 用例3 跳過(guò)') def test_case_three(self): print('---用例 3 ---') if __name__ == '__main__': unittest.main(verbosity=2)
運(yùn)行結(jié)果:
test_case_one (__main__.SkipExample) ... skipped '用例 1 無(wú)條件跳過(guò)'
test_case_two (__main__.SkipExample) ... skipped '條件為T(mén)rue ,用例2 跳過(guò)'
test_case_three (__main__.SkipExample) ... skipped '條件為False, 用例3 跳過(guò)'
二、如何使用sys.argv
- sys.argv 是一個(gè)數(shù)組 第一個(gè)元素是程序本身路徑
- sys.argv 實(shí)現(xiàn)從程序外部向程序傳遞參數(shù)。
例:
how_to_use_argv.py
#encoding:utf8 from sys import argv print('argv是一個(gè)數(shù)組:',argv)
使用命令行運(yùn)行上述腳本,外部傳入?yún)?shù):1 2 3 4
python how_to_use_argv.py 1 2 3 4
運(yùn)行結(jié)果
argv是一個(gè)數(shù)組: ['how_to_use_argv.py', '1', '2', '3', '4']
小結(jié):
- sys.argv 實(shí)現(xiàn)從程序外部向程序傳遞參數(shù)
- 傳入的第一個(gè)參數(shù)為腳本文件名
- 傳入程序的每一個(gè)參數(shù)以空格 隔開(kāi)
- 傳入程序的參數(shù)均以字符串的類(lèi)型存儲(chǔ),命令行中不需要加引號(hào)
三、自動(dòng)化測(cè)試項(xiàng)目中如何一套代碼多套環(huán)境運(yùn)行
需求1:一套代碼可以測(cè)試多個(gè)環(huán)境,不希望每次測(cè)試不同環(huán)境的時(shí)候都要去改代碼里面的URL,希望把代碼里面的URL參數(shù)化
以UI自動(dòng)化為例:
test_multiple_env.py
# encoding:utf8 from selenium import webdriver from sys import argv import unittest from time import sleep class TestEnv(unittest.TestCase): def setUp(self): self.url = argv[-1] print(self.url) self.driver = webdriver.Chrome() def test_load_page(self): self.driver.get(self.url) sleep(10) if __name__ == '__main__': suit = unittest.TestSuite() suit.addTest(TestEnv('test_load_page')) runner = unittest.TextTestRunner() runner.run(suit)
運(yùn)行命令行:
python test_multiple_env.py https://www.baidu.com/
運(yùn)行結(jié)果:
打開(kāi)瀏覽器,導(dǎo)航到百度頁(yè)面
需求2:有些用例不能在預(yù)發(fā)布環(huán)境或者生產(chǎn)環(huán)境運(yùn)行,怎么跳過(guò)該用例
UI自動(dòng)化為例:
test_multiple_env_skip.py
# encoding:utf8 from selenium import webdriver from sys import argv import unittest from time import sleep URL = argv[-1] print('argv[-1] : ', URL) class TestEnv(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() @unittest.skipIf(URL != 'https://www.baidu.com' ,'不是百度首頁(yè)的URL,跳過(guò)用例test_load_page') def test_load_page(self): self.driver.get(URL) sleep(10) if __name__ == '__main__': suit = unittest.TestSuite() suit.addTest(TestEnv('test_load_page')) runner = unittest.TextTestRunner(verbosity=2) runner.run(suit)
運(yùn)行命令行:
python test_multiple_env_skip.py www.testclass.com
運(yùn)行結(jié)果:
argv[-1] : www.baidu.com
test_load_page (__main__.TestEnv) ... skipped '不是百度首頁(yè)的URL,跳過(guò)用例test_load_page'----------------------------------------------------------------------
Ran 1 test in 0.001sOK (skipped=1)
小結(jié)
從上面的例子可以了解,如何通過(guò)sys.argv傳入環(huán)境參數(shù),雖然上文是用百度首頁(yè)作為例子,但同時(shí)引出,我們?cè)谧鲎詣?dòng)化測(cè)試時(shí)候,實(shí)現(xiàn)一套代碼多環(huán)境運(yùn)行思路
命令行帶參數(shù)啟動(dòng)腳本,在Unittest中,可以實(shí)現(xiàn)不同的測(cè)試環(huán)境可以跳過(guò)用例
Github 源碼地址:https://github.com/SEtester/how_to_run_test_case (本地下載)
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- python單元測(cè)試unittest實(shí)例詳解
- Python單元測(cè)試框架unittest使用方法講解
- Python中unittest用法實(shí)例
- Python+request+unittest實(shí)現(xiàn)接口測(cè)試框架集成實(shí)例
- Python Unittest自動(dòng)化單元測(cè)試框架詳解
- Python unittest 簡(jiǎn)單實(shí)現(xiàn)參數(shù)化的方法
- Python unittest單元測(cè)試框架的使用
- Python中Unittest框架的具體使用
- Python單元測(cè)試框架unittest簡(jiǎn)明使用實(shí)例
- 一篇文章搞懂Python Unittest測(cè)試方法的執(zhí)行順序
相關(guān)文章
Python實(shí)現(xiàn)上課點(diǎn)名器系統(tǒng)
今天給大家分享一個(gè)讀者粉絲投稿的,關(guān)于上課點(diǎn)名的實(shí)戰(zhàn)案例,對(duì)Python上課點(diǎn)名器實(shí)現(xiàn)過(guò)程感興趣的朋友,一起來(lái)看看是如何實(shí)現(xiàn)的吧2021-10-10django rest framework之請(qǐng)求與響應(yīng)(詳解)
下面小編就為大家?guī)?lái)一篇django rest framework之請(qǐng)求與響應(yīng)(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望對(duì)大家有所幫助2017-11-11Python數(shù)據(jù)可視化編程通過(guò)Matplotlib創(chuàng)建散點(diǎn)圖代碼示例
這篇文章主要介紹了Python數(shù)據(jù)可視化編程通過(guò)Matplotlib創(chuàng)建散點(diǎn)圖實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12Python簡(jiǎn)易版停車(chē)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)簡(jiǎn)易版停車(chē)管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08python3爬蟲(chóng)獲取html內(nèi)容及各屬性值的方法
今天小編就為大家分享一篇python3爬蟲(chóng)獲取html內(nèi)容及各屬性值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12jupyter notebook tensorflow打印device信息實(shí)例
這篇文章主要介紹了jupyter notebook tensorflow打印device信息實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04最新解決'nvidia-smi' 不是內(nèi)部或外部命令也不是可運(yùn)行的程序
使用cmd查看電腦顯卡的信息,調(diào)用nvidia-smi查看顯卡使用情況報(bào)錯(cuò),提示'nvidia-smi' 不是內(nèi)部或外部命令,也不是可運(yùn)行的程序,本文給大家分享完美解決方案,感興趣的朋友跟隨小編一起看看吧2023-01-01解析pip安裝第三方庫(kù)但PyCharm中卻無(wú)法識(shí)別的問(wèn)題及PyCharm安裝第三方庫(kù)的方法教程
這篇文章主要介紹了解析pip安裝第三方庫(kù)但PyCharm中卻無(wú)法識(shí)別的問(wèn)題及PyCharm安裝第三方庫(kù)的方法教程,本文圖文并茂給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03