當前位置:首頁 » 編程語言 » pythontestcase

pythontestcase

發布時間: 2022-04-29 06:07:01

python unittest單元測試框架中,如何對一個testcase參數化,具體如何實現

#首先pyunit不像junit一樣支持參數化測試。。。不過不是不能實現,只是pyunit的作者想讓#這個東西變得盡量簡單。所以不去實現。當然這個pyhon語言足夠動態,你可以自己去實現

#外部輸入參數測試。

importunittest
classParametrizedTestCase(unittest.TestCase):
"""
inheritfromthisclass.
"""
def__init__(self,methodName='runTest',param=None):
super(ParametrizedTestCase,self).__init__(methodName)
self.param=param
@staticmethod
defparametrize(testcase_klass,param=None):
"""
subclass,passingthemtheparameter'param'.
"""
testloader=unittest.TestLoader()
testnames=testloader.getTestCaseNames(testcase_klass)
suite=unittest.TestSuite()
fornameintestnames:
suite.addTest(testcase_klass(name,param=param))
returnsuite


#####################################################

##用法-testcase
classTestOne(ParametrizedTestCase):
deftest_something(self):
print'param=',self.param
self.assertEqual(1,1)

deftest_something_else(self):
self.assertEqual(2,2)

##用法-測試
suite=unittest.TestSuite()
suite.addTest(ParametrizedTestCase.parametrize(TestOne,param=42))
suite.addTest(ParametrizedTestCase.parametrize(TestOne,param=13))
unittest.TextTestRunner(verbosity=2).run(suite)

#結果
test_something(__main__.TestOne)...param=42
ok
test_something_else(__main__.TestOne)...ok
test_something(__main__.TestOne)...param=13
ok
test_something_else(__main__.TestOne)...ok

----------------------------------------------------------------------
Ran4testsin0.000s

OK

當然最好的方法就是用別人寫的東西。。。

https://github.com/taykey/nose-ittr

這個拿去,不謝

㈡ python 的unittest單元測試框架里,可以對一個test_case 多次執行嗎

為啥有一個測試用例需要執行多次的需求??

ut肯定是不支持的,你可以在ut外圍包一層shell或者python,用來識別配置然後調用ut執行即可

㈢ python中的unittest調用TestCase報錯是什麼原因

setup主要是進行測試前的初始化工作,比如在介面測試前面做一些前置的參數賦值,資料庫操作等等
teardown是測試後的清除工作,比如參數還原或銷毀,資料庫的還原恢復等

㈣ Python自動化測試框架有哪些

自動化測試常用的Python框架有哪些?常用的框架有Robot Framework、Pytest、UnitTest/PyUnit、Behave、Lettuce。Pytest、Robot Framework和UnitTest主要用於功能與單元測試,Lettuce和Behave僅適用於行為驅動測試。
一、Robot Framework
Python測試框架之一,Robot Framework被用在測試驅動(test-driven)類型的開發與驗收中。雖然是由Python開發而來,但是它也可以在基於.Net的IronPython和基於Java的Jython上運行。作為一個Python框架,Robot還能夠兼容諸如Windows、MacOS、以及linux等平台。
在使用Robot Framework(RF)之前,需要先安裝Python 2.7.14及以上的版本。推薦使用Python 3.6.4,以確保適當的注釋能夠被添加到代碼段中,並能夠跟蹤程序的更改。同時還需要安裝Python包管理器--pip。
二、Pytest
適用於多種軟體測試的Pytest,是另一個Python類型的自動化測試框架。憑借著其開源和易學的特點,該工具經常被QA(質量分析)團隊、開發團隊、個人團隊、以及各種開源項目所使用。鑒於Pytest具有「斷言重寫(assert rewriting)」之類的實用功能,許多大型互聯網應用,如Dropbox和Mozilla,都已經從下面將要提到的unittest(Pyunit)切換到了Pytest之上。
除了基本的Python知識,用戶並不需要更多的技術儲備。另外,用戶只需要有一台帶有命令行界面的測試設備,並且安裝好了Python包管理器、以及可用於開發的IDE工具。
三、UnitTest/PyUnit
UnitTest/PyUnit一種標准化的針對單元測試的Python類自動化測試框架。基類TestCase提供了各種斷言方法、以及所有清理和設置的常式。因此,TestCase子類中的每一種方法都是以「test」作為名詞前綴,以標識它們能夠被作為測試用例所運行。用戶可以使用load方法和TestSuite類來分組、並載入各種測試。
可以通過聯合使用,來構建自定義的測試運行器。正如我們使用Junit去測試Selenium那樣,UnitTest也會用到UnitTest-sml-reporting、並能生成各種XML類型的報告。由於UnitTest默認使用了Python,因此我們並不需要什麼先決條件。除了需要具備Python框架的基本知識,您也可以額外地安裝pip、以及用於開發的IDE工具。
四、Behave
行為驅動開發是一種基於敏捷軟體開發的方法。它能夠鼓勵開發人員、業務參與者和QA人員,三者之間的協作。Python測試框架Behave允許團隊避開各種復雜的情況,去執行BDD測試。從本質上說該框架與SpecFlow和Cucumber相似,常被用於執行自動化測試。用戶可以通過簡單易讀的語言來編寫測試用例,並能夠在其執行期間粘貼到代碼之中。而且,那些被設定的行為規范與步驟,也可以被重用到其他的測試方案中。
任何具備Python基礎知識的人都可以使用Behave。其他先決條件還包括:先安裝Python 2.7.14及以上的版本。通過Python包管理器或pip來與Behave協作。大多數開發人員會選擇Pycharm作為開發環境,當然您也可以選用其他的IDE工具。
五、Lettuce
Lettuce是另一種基於Cucumber和Python的行為驅動類自動化工具。Lettuce主要專注於那些具有行為驅動開發特徵的普通任務。它不但簡單易用,而且能夠使得整個測試過程更流暢、甚至更有趣。安裝帶有IDE的Python 2.7.14、及以上的版本。當然,您也可以使用Pycharm或任何其他IDE工具。同時,您還需要安裝Python包管理器。

㈤ python中的unittest調用TestCase報錯,為什麼,幫忙看看

因為unittest是python內置的,但是你在工程裡面也命名了一個文件夾unittest。
所以導入的時候會先去查找你的定義的unittest,就沒有TestCase這個屬性。
解決辦法,把你unittest重命名

㈥ python 的unittest單元測試框架里,可以對一個test_case 傳參數進行參數化嗎

一般不需要傳參,一般的參數話屬性在初始化setup的時候就初始化成功,後面test_xx中直接引用,謝謝採納

㈦ 如何使用python編寫測試腳本

1)doctest
使用doctest是一種類似於命令行嘗試的方式,用法很簡單,如下

復制代碼代碼如下:

def f(n):
"""
>>> f(1)
1
>>> f(2)
2
"""
print(n)

if __name__ == '__main__':
import doctest
doctest.testmod()

應該來說是足夠簡單了,另外還有一種方式doctest.testfile(filename),就是把命令行的方式放在文件里進行測試。

2)unittest
unittest歷史悠久,最早可以追溯到上世紀七八十年代了,C++,Java里也都有類似的實現,Python里的實現很簡單。
unittest在python里主要的實現方式是TestCase,TestSuite。用法還是例子起步。

復制代碼代碼如下:

from widget import Widget
import unittest
# 執行測試的類
class WidgetTestCase(unittest.TestCase):
def setUp(self):
self.widget = Widget()
def tearDown(self):
self.widget.dispose()
self.widget = None
def testSize(self):
self.assertEqual(self.widget.getSize(), (40, 40))
def testResize(self):
self.widget.resize(100, 100)
self.assertEqual(self.widget.getSize(), (100, 100))
# 測試
if __name__ == "__main__":
# 構造測試集
suite = unittest.TestSuite()
suite.addTest(WidgetTestCase("testSize"))
suite.addTest(WidgetTestCase("testResize"))

# 執行測試
runner = unittest.TextTestRunner()
runner.run(suite)

簡單的說,1>構造TestCase(測試用例),其中的setup和teardown負責預處理和善後工作。2>構造測試集,添加用例3>執行測試需要說明的是測試方法,在Python中有N多測試函數,主要的有:
TestCase.assert_(expr[, msg])
TestCase.failUnless(expr[, msg])
TestCase.assertTrue(expr[, msg])
TestCase.assertEqual(first, second[, msg])
TestCase.failUnlessEqual(first, second[, msg])
TestCase.assertNotEqual(first, second[, msg])
TestCase.failIfEqual(first, second[, msg])
TestCase.assertAlmostEqual(first, second[, places[, msg]])
TestCase.failUnlessAlmostEqual(first, second[, places[, msg]])
TestCase.assertNotAlmostEqual(first, second[, places[, msg]])
TestCase.failIfAlmostEqual(first, second[, places[, msg]])
TestCase.assertRaises(exception, callable, ...)
TestCase.failUnlessRaises(exception, callable, ...)
TestCase.failIf(expr[, msg])
TestCase.assertFalse(expr[, msg])
TestCase.fail([msg])

㈧ 新手求助!python+testlink自動化,如何下載testlink的test case附件

你需要先安裝這個東西
你可以從 SourceForge去下載一個穩定的版本,然後pip install TestLink-API-Python-client-0.8.0.zip
然後你需要在linux裡面用下面的步驟來驗證安裝:
set TESTLINK_API_PYTHON_SERVER_URL=http://[YOURSERVER]/testlink/lib/api/xmlrpc/v1/xmlrpc.php
set TESTLINK_API_PYTHON_DEVKEY=[Users devKey generated by TestLink]
python
>>> import testlink
>>> tls = testlink.TestLinkHelper(testlink.TestlinkAPIClient)
>>> tls.about()
' Testlink API Version: 1.0 initially ....'
下面是一個完成的測試過程:
set TESTLINK_API_PYTHON_SERVER_URL=http://[YOURSERVER]/testlink/lib/api/xmlrpc/v1/xmlrpc.php
set TESTLINK_API_PYTHON_DEVKEY=[Users devKey generated by TestLink]
python
>>> import testlink
>>> tls = testlink.TestLinkHelper().connect(testlink.TestlinkAPIClient)
>>> tls.countProjects()
3
>>> tc_info = tls.getTestCase(None, testcaseexternalid='NPROAPI-3')
[{'full_tc_external_id': 'NPROAPI-3', ..., 'id': '5440', 'version': '2',
'testsuite_id': '5415', 'tc_external_id': '3','testcase_id': '5425', ...}]
>>> tls.TCnewTestCase(tc_info[0]['testcase_id'], testsuiteid=newSuiteID,
testcasename='a new test case name')
>>> print tls.whatArgs('createTestPlan')
createTestPlan(<testplanname>, <testprojectname>, [note=<note>], [active=<active>],
[public=<public>], [devKey=<devKey>])
create a test plan

這樣的話,你就可以看到對應的testcase用例了

㈨ python專家,幫忙看下unittest模塊testcase類錯誤

>>> import unittest
>>> unittest.TestCase
<class 'unittest.case.TestCase'>
>>>
所以你的是誤用標點符號,應該用點你用逗號,當然錯了

㈩ python中的super(TestCase, self).__init__()如何理解

首先找到test的父類(比如是類A),然後把類test的對象self轉換為類A的對象,然後「被轉換」的類A對象調用自己的__init__函數

熱點內容
我的世界pe伺服器創造 發布:2025-05-15 10:51:17 瀏覽:607
移動端打吃雞要什麼配置 發布:2025-05-15 10:48:16 瀏覽:756
我的世界哪五個伺服器被炸了 發布:2025-05-15 10:36:16 瀏覽:994
ehcache存儲對象 發布:2025-05-15 10:35:31 瀏覽:528
搭建虛擬電腦的伺服器 發布:2025-05-15 10:29:31 瀏覽:270
湖人雙核配置哪個最好 發布:2025-05-15 10:09:48 瀏覽:980
手機熱點密碼怎麼查看 發布:2025-05-15 09:54:47 瀏覽:109
生意發力雲存儲 發布:2025-05-15 09:54:45 瀏覽:617
編寫一個shell腳本添加用戶 發布:2025-05-15 09:54:43 瀏覽:506
資料庫查看錶命令 發布:2025-05-15 09:52:27 瀏覽:915