红:函数有了但还不对
(每道题开头都有同一段:被测模块 c_to_f / length,和一个静音跑测试的 run(),它交回「跑了几条/挂了几条/出错几条」。)
fmt 有了第一版(只做四舍五入,不去尾零)。同样两条测试,运行程序:
import io, unittest
LEN = {"m": 1.0, "km": 1000.0, "cm": 0.01}
def c_to_f(c):
return c * 9 / 5 + 32
def length(v, src, to):
for u in (src, to):
if u not in LEN:
raise ValueError("不认识的单位:" + u)
return v * LEN[src] / LEN[to]
def run(*cases):
suite = unittest.TestSuite()
for c in cases:
suite.addTests(unittest.defaultTestLoader.loadTestsFromTestCase(c))
r = unittest.TextTestRunner(stream=io.StringIO()).run(suite)
return str(r.testsRun) + "/" + str(len(r.failures)) + "/" + str(len(r.errors))
def fmt(x):
return "%.2f" % x
class TestFmt(unittest.TestCase):
def test_strip_zero(self):
self.assertEqual(fmt(37.0), "37")
def test_two_places(self):
self.assertEqual(fmt(1609.344), "1609.34")
print(run(TestFmt))
全部评论