2.3 提交

现在是提交代码的好时机,因为已经做了一次完整的修改。我们扩展了功能测试,加入注释说明我们要在最简可用的待办事项清单应用中执行哪些操作。我们还使用Python中的unittest模块及其提供的各种测试辅助函数重写了测试。

执行git status命令,你会发现只有functional_tests.py文件的内容变化了。然后执行git diff命令,查看上一次提交和当前硬盘中保存内容之间的差异,你会发现functional_tests.py文件的变动很大:

$ git diff
diff --git a/functional_tests.py b/functional_tests.py
index d333591..b0f22dc 100644
--- a/functional_tests.py
+++ b/functional_tests.py
@@ -1,6 +1,45 @@
  from selenium import webdriver
+import unittest

-browser = webdriver.Firefox()
-browser.get('http://localhost:8000')
+class NewVisitorTest(unittest.TestCase):

-assert 'Django' in browser.title
+    def setUp(self):
+        self.browser = webdriver.Firefox()
+
+    def tearDown(self):
+        self.browser.quit()
[...]

现在执行下述命令:

$ git commit -a

-a的意思是:自动添加已跟踪文件(即已经提交的各文件)中的改动。上述命令不会添加全新的文件(你要使用git add命令手动添加这些文件)。不过就像这个例子一样,经常没有添加新文件,因此这是个很有用的简便用法。

弹出编辑器后,写入一个描述性的提交消息,比如“使用注释编写规格的首个功能测试,而且使用了unittest”。

现在我们身处一个绝妙的位置,可以开始为这个清单应用编写真正的代码了。请继续往下阅读。

有用的TDD概念

用户故事

从用户的角度描述应用应该如何运行。用来组织功能测试。

预期失败

意料之中的失败。