0
我只是想了解unittest的子類和方法的行爲。在下面的代碼中,我想運行test_add方法而不是test_sub。可有人請向我解釋什麼,我做錯了,因爲輸出證明,正在執行這兩種方法:TextTestRunner在pyunit中運行2個測試(當一個被調用時的test_methods)
import unittest
def add(a,b):
x=a+b
return x
def sub(x,y):
z=x-y
return z
class addnum():
def calladd(self, a, b):
sum1 = add(a, b)
return sum1
def callsub(self,x,y):
diff = sub(x , y)
print "subtraction succ"
return diff
class test(addnum, unittest.TestCase):
def setup(self):
pass
def teardown(self):
pass
def test_add(self):
a1=addnum()
if a1.calladd(1, 2) ==3:
print "add successful"
assert addnum().calladd(1,2) == 3
def test_sub(self):
assert addnum().callsub(5, 3) == 2
print "abc"
#suite = unittest.TestSuite()
#suite.addTest(test('test_add'))
runner = unittest.TextTestRunner(verbosity=2)
runner.run(test(methodName='test_add'))
輸出如下:
Finding files... done.
Importing test modules ... add successful
done.
add successful
subtraction succ
abc
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
test_add (trial2.test) ... ok
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
請幫助。我承認我的知識在這一點上相當有限。
你正在使用哪種python?我知道單元測試模塊在2.7以後有一些不同。這可以解釋爲什麼我們的運行不匹配行爲 – Diegomanas
我已經檢查過,並且在使用TextTestRunner的方式中看不到太多差異。 – Diegomanas
看來Eclipse的PyDev插件只執行一次整個模塊。這就是爲什麼即使不使用if(main),程序也會運行這兩個測試。無論如何感謝指導。爲了方便起見,我切換到NetBeans。 – Kevin