复现 bug 的测试红了
length 里 cm 的系数被写成了 0.1。写一条按用户报告复现的测试,运行程序:
import io, unittest
LEN = {"m": 1.0, "km": 1000.0, "cm": 0.1}
def length(v, src, to):
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))
class TestBug(unittest.TestCase):
def test_cm_to_m(self):
self.assertAlmostEqual(length(42, "cm", "m"), 0.42)
print(run(TestBug) + "/" + str(length(42, "cm", "m")))
全部评论