divisors.py
def get_divisors(num, possible_divisors):
''' (int, list of int) -> list of int
Return a list of the values from possible_divisors
that are divisors of num.
>>> get_divisors(8, [1, 2, 3])
[1, 2]
>>> get_divisors(4, [-2, 0, 2])
[-2, 2]
'''
divisors = []
for item in possible_divisors:
if item != 0 and num % item == 0:
divisors.append(item)
return divisors
if __name__ == '__main__':
import doctest
doctest.testmod()
这里使用了doctest来测试例子。
test_divisors.py
import unittest
import divisors
class TestDivisors(unittest.TestCase):
"""Example unittest test methods for get_divisors."""
def test_divisors_example_1(self):
"""Test get_divisors with 8 and [1, 2, 3]."""
actual = divisors.get_divisors(8, [1, 2, 3])
expected = [1, 2]
self.assertEqual(expected, actual)
def test_divisors_example_2(self):
"""Test get_divisors with 4 and [-2, 0, 2]."""
actual = divisors.get_divisors(4, [-2, 0, 2])
expected = [-2, 2]
self.assertEqual(expected, actual)
if __name__ == '__main__':
unittest.main(exit=False)
unittest可以让你避免在程序中写过多的例子而降低程序的可读性。unittest顾名思义,就是单元测试。另外unittest会得出更多的信息。