面向对象程序的测试实践
1. 项目需求与测试驱动开发引入
在开发一个程序时,我们需要实现encode和decode两个方法。encode方法接收一个关键字和明文,返回密文;decode方法接收关键字和密文,返回原始消息。这里采用测试驱动开发(TDD)策略,使用pytest进行单元测试。
首先,编写encode方法的测试代码:
def test_encode(): cipher = VigenereCipher("TRAIN") encoded = cipher.encode("ENCODEDINPYTHON") assert encoded == "XECWQXUIVCRKHWA"运行这个测试会失败,因为还未导入VigenereCipher类。于是创建一个新模块来存放这个类,初始的VigenereCipher类如下:
class VigenereCipher: def __init__(self, keyword): self.keyword = keyword def encode(self, plaintext): return "XECWQXUIVCRKH