, , . , test_marshal, ( , , ), , unit test. , , -
import unittest
class Nums(object):
FORMAT = "n1 %g, n2 %g, n3 %g"
def __init__(self, n1, n2, n3):
self.n1, self.n2, self.n3 = n1, n2, n3
def test_marshal(self):
return self.FORMAT % (self.n1, self.n2, self.n3)
class NumsTests(unittest.TestCase):
def setUp(self):
self.nums = [10, 20, 30]
self.nu = Nums(*self.nums)
self.nu_nums = [self.nu.n1, self.nu.n2, self.nu.n3]
def test_init1(self):
self.assertEquals(self.nu.test_marshal(), self.nu.FORMAT % self.nums )
def test_init2(self):
self.assertEquals(self.nums, self.nu_nums)
def test_init3(self):
for reference, test in zip(self.nums, self.nu_nums):
self.assertEquals(reference, test)
. http://docs.python.org/library/functions.html#apply apply, .
, , , , , .
, , , , . , , - , , , , . , -, , , , , , , - :
class NumsTests(unittest.TestCase):
def setUp(self):
self.nums = {"n1": 10, "n2": 20, "n3": 30}
self.nu = Nums(**self.nums)
def test_init3(self):
for attr,val in self.nums.items():
self.assertEqual([attr, val], [attr, getattr(self.nu, val)])
- , ,
AssertionError: ["n1", 10] != ["n1", 11]
, , , , , . - , test_init3 , Nums.
, getattr , __init__ , num, n1, n1_ .. __ dict__, .