您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)Python中Unittest如何根據(jù)不同測(cè)試環(huán)境跳過用例的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
一、Unittest跳過用例
@unittest.skip(reason) , 直接跳過被裝飾的用例 ,reason用于填寫跳過用例的原因
@unittest.skipIf(condition, reason) , condition 如果為真,跳過被裝飾的用例,reason用于填寫跳過用例的原因
@unittest.skipUnless(condition, reason) , condition如果為假,跳過被裝飾的用例,reason用于填寫跳過用例的原因
例:
test_case_skip.py
# encoding:utf8 import unittest class SkipExample(unittest.TestCase): @unittest.skip('用例 1 無條件跳過') def test_case_one(self): print('---用例 1 ---') @unittest.skipIf(2 > 1, '條件為True ,用例2 跳過') def test_case_two(self): print('---用例 2 ---') @unittest.skipUnless(2 < 1, '條件為False, 用例3 跳過') def test_case_three(self): print('---用例 3 ---') if __name__ == '__main__': unittest.main(verbosity=2)
運(yùn)行結(jié)果:
test_case_one (__main__.SkipExample) ... skipped '用例 1 無條件跳過'
test_case_two (__main__.SkipExample) ... skipped '條件為True ,用例2 跳過'
test_case_three (__main__.SkipExample) ... skipped '條件為False, 用例3 跳過'
二、如何使用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ù)以空格 隔開
傳入程序的參數(shù)均以字符串的類型存儲(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é)果:
打開瀏覽器,導(dǎo)航到百度頁(yè)面
需求2:有些用例不能在預(yù)發(fā)布環(huán)境或者生產(chǎn)環(huán)境運(yùn)行,怎么跳過該用例
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,跳過用例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,跳過用例test_load_page'----------------------------------------------------------------------
Ran 1 test in 0.001sOK (skipped=1)
感謝各位的閱讀!關(guān)于“Python中Unittest如何根據(jù)不同測(cè)試環(huán)境跳過用例”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。