Our program will need an encode method that takes a keyword and plaintext and returns the ciphertext, and a decode method that accepts a keyword and ciphertext and returns the original message.
But rather than just writing those methods, let's follow a test-driven development strategy. We'll be using pytest for our unit testing. We need an encode method, and we know what it has to do; let's write a test for that method first, as follows:
def test_encode(): cipher = VigenereCipher("TRAIN") encoded = cipher.encode("ENCODEDINPYTHON") assert encoded == "XECWQXUIVCRKHWA"
This test fails, naturally, because we aren't importing a VigenereCipher class anywhere. Let's create a new module to hold that class.
Let's start with the following ...