测试驱动开发

时间:2019-01-13 16:12:29

标签: python unit-testing

我已编写此代码来检查字符串是否全部大写。如果是这样,则返回True,如果不是全部大写,则返回False。我需要为该解决方案运行单元测试,但遇到问题。

解决方案代码是否有更好或更简单的代码?如何对解决方案进行单元测试?我的尝试正确吗?如果不能,请您帮我吗?

我的解决方案代码

def is_uppercase(x):
    words = x.split("_")
    for word in words:
        if word == word.upper():
            return True
        else:
            return False

is_uppercase("AM dONALD")

尝试的单元测试

import unittest
import Capss       #  solution code file name


class TestCaps(unittest.TestCase):

    def test_is_uppercase(self):
        self.assertTrue("FF", msg=True)


if __name__ == '__main__':
    unittest.main()

当我运行解决方案代码时,以大写形式传递参数或混合使用大小写,我得到了预期的True或False。但是,当我在单元测试中操纵值时,结果是相同的,没有任何变化。有帮助吗?

1 个答案:

答案 0 :(得分:1)

这里:

def test_is_uppercase(self):
    self.assertTrue("FF", msg=True)

您的测试中只有一个断言,但是您完全没有调用您声称要测试的实际“被测方法”。

您必须调用该方法,并检查预期结果,例如:

self.assertTrue(is_uppercase("UPPER"))
self.assertFalse(is_uppercase("lower"))
self.assertFalse(is_uppercase("Mixed"))

单元测试的重点是调用“生产代码”功能,并检查它们是否提供了预期的结果。

这里没有魔术,单元测试环境无法猜测您导入了Capps,因为您魔术般地希望对is_uppercase()进行测试!