Django单元测试:assertEqual()失败

时间:2016-01-06 13:43:00

标签: django unit-testing

我正在关注这本书" Python中的测试驱动开发"并具有以下功能:

tests.py:

def homePage(request):
    print(request.POST.get('itemText'))
    return render(request, 'lists/home.html', {'itemText':request.POST.get('itemText')})

views.py

...
<form method=POST>
  <input id=newItem name=itemText placeholder="Enter a to-do item">
</form>
<table id=listTable>
  <tr><td>{{itemText}}</td></tr>
</table>
...

home.html的:

assertIn(..., response)

assertIn(..., expectedHTML)response都成功,这意味着expectedHTMLresponse都有&#39;新列表项&#39;在他们中间。

我还打印出expectedHMTLassertEqual,它们看起来完全相同。比较还打印出“相同”字样。显示它们是相同的。

但是,... <table id=listTable> - <tr><td>None</td></tr> ? ---- + <tr><td></td></tr> </table> ... 失败,并且逐行比较:

Creating test database for alias 'default'...
A new list item
<!doctype html>
<html>
<head>
<title>To do list</title>
<meta charset=utf-8>
</head>
<body>
<h1>Your to do list</h1>
<form method=POST>
  <input id=newItem name=itemText placeholder="Enter a to-do item">
</form>
<table id=listTable>
  <tr><td>A new list item</td></tr>
</table>
</body>
</html>
<!doctype html>
<html>
<head>
<title>To do list</title>
<meta charset=utf-8>
</head>
<body>
<h1>Your to do list</h1>
<form method=POST>
  <input id=newItem name=itemText placeholder="Enter a to-do item">
</form>
<table id=listTable>
  <tr><td>A new list item</td></tr>
</table>
</body>
</html>
Same
.None
F.
======================================================================
FAIL: testHomePageReturnsCorrectHTML (lists.tests.HomePageTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/yltang/course/TDD/lecture/python/webapps/git/superlists/superlists/lists/tests.py", line 27, in testHomePageReturnsCorrectHTML
    self.assertEqual(response, expectedHTML)
AssertionError: '<!do[231 chars]stTable>\n  <tr><td>None</td></tr>\n</table>\n</body>\n</html>' != '<!do[231 chars]stTable>\n  <tr><td></td></tr>\n</table>\n</body>\n</html>'
  <!doctype html>
  <html>
  <head>
  <title>To do list</title>
  <meta charset=utf-8>
  </head>
  <body>
  <h1>Your to do list</h1>
  <form method=POST>
    <input id=newItem name=itemText placeholder="Enter a to-do item">
  </form>
  <table id=listTable>
-   <tr><td>None</td></tr>
?           ----
+   <tr><td></td></tr>
  </table>
  </body>
  </html>

----------------------------------------------------------------------
Ran 3 tests in 0.017s

FAILED (failures=1)
Destroying test database for alias 'default'...

一个是无,另一个是空的。我做错了什么?

编辑: 整个测试输出如下所示:

{{1}}

1 个答案:

答案 0 :(得分:1)

您已将print语句添加到其他测试中。打印语句在testHomePageCanSaveAPostRequest中,正在传递。

失败的测试是testHomePageReturnsCorrectHTML,您没有将其包含在您的问题中。