欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python Unittest根據(jù)不同測(cè)試環(huán)境跳過(guò)用例的方法

 更新時(shí)間:2018年12月16日 11:00:55   作者:深圳-逸遙  
這篇文章主要給大家介紹了關(guān)于Python Unittest如何根據(jù)不同測(cè)試環(huán)境跳過(guò)用例的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧

前言

在利用單元測(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.001s

OK (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ì)腳本之家的支持。

相關(guān)文章

最新評(píng)論