国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python Unittest根據不同測試環境跳過用例的方法

2020-01-04 13:48:35
字體:
來源:轉載
供稿:網友

前言

在利用單元測試框架執行測試用例的過程中,有時只需要執行一部分用例,或者跳過某些暫不需要執行的用例,python的unittest框架就內置這樣的功能。

本文章會講述以下幾個內容:

1、Unittest 如何跳過用例

2、如何使用sys.argv

3、自動化測試項目中如何一套代碼多套環境運行

一、Unittest跳過用例

  • @unittest.skip(reason) , 直接跳過被裝飾的用例 ,reason用于填寫跳過用例的原因
  • @unittest.skipIf(condition, reason) , condition 如果為真,跳過被裝飾的用例,reason用于填寫跳過用例的原因
  • @unittest.skipUnless(condition, reason) , condition如果為假,跳過被裝飾的用例,reason用于填寫跳過用例的原因

例:

test_case_skip.py

# encoding:utf8import unittestclass 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)

運行結果:

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 是一個數組 第一個元素是程序本身路徑
  • sys.argv 實現從程序外部向程序傳遞參數。

例:

how_to_use_argv.py

#encoding:utf8from sys import argvprint('argv是一個數組:',argv)

使用命令行運行上述腳本,外部傳入參數:1 2 3 4

python how_to_use_argv.py 1 2 3 4

運行結果

argv是一個數組: ['how_to_use_argv.py', '1', '2', '3', '4']

小結:

  • sys.argv 實現從程序外部向程序傳遞參數
  • 傳入的第一個參數為腳本文件名
  • 傳入程序的每一個參數以空格 隔開
  • 傳入程序的參數均以字符串的類型存儲,命令行中不需要加引號

三、自動化測試項目中如何一套代碼多套環境運行

需求1:一套代碼可以測試多個環境,不希望每次測試不同環境的時候都要去改代碼里面的URL,希望把代碼里面的URL參數化
以UI自動化為例:

test_multiple_env.py

# encoding:utf8from selenium import webdriverfrom sys import argvimport unittestfrom time import sleepclass 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)

運行命令行:

python test_multiple_env.py https://www.baidu.com/

運行結果:

打開瀏覽器,導航到百度頁面

Python,Unittest,測試

需求2:有些用例不能在預發布環境或者生產環境運行,怎么跳過該用例

UI自動化為例:

test_multiple_env_skip.py

# encoding:utf8from selenium import webdriverfrom sys import argvimport unittestfrom time import sleepURL = argv[-1]print('argv[-1] : ', URL)class TestEnv(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() @unittest.skipIf(URL != 'https://www.baidu.com' ,'不是百度首頁的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)

運行命令行:

python test_multiple_env_skip.py www.testclass.com

運行結果:

argv[-1] : www.baidu.com
test_load_page (__main__.TestEnv) ... skipped '不是百度首頁的URL,跳過用例test_load_page'

----------------------------------------------------------------------
Ran 1 test in 0.001s

OK (skipped=1)

小結

從上面的例子可以了解,如何通過sys.argv傳入環境參數,雖然上文是用百度首頁作為例子,但同時引出,我們在做自動化測試時候,實現一套代碼多環境運行思路

命令行帶參數啟動腳本,在Unittest中,可以實現不同的測試環境可以跳過用例

Github 源碼地址:https://github.com/SEtester/how_to_run_test_case (本地下載

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兴文县| 同江市| 安溪县| 边坝县| 怀远县| 泽州县| 襄城县| 尉氏县| 秦皇岛市| 阳山县| 乐山市| 青冈县| 灌云县| 康定县| 祁阳县| 靖江市| 登封市| 光泽县| 汽车| 竹溪县| 镶黄旗| 海口市| 贵定县| 和顺县| 永胜县| 盐津县| 色达县| 宁南县| 华容县| 天峨县| 松阳县| 东乡县| 鸡东县| 藁城市| 阳东县| 页游| 巴林右旗| 肥西县| 文化| 沙雅县| 台中市|