pythontestcase
㈠ 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__函數