3.7为视图编写单元测试---单元测试/编写代码循环

我的githup 代码获取https://github.com/brw123/TDD-note
我们在这一章节跟随做了什么

在这个章节我越发有种在练左右互博术的感觉
就是给定义了一个函数在视图中,并且给html 响应了点内容

我们先干什么呢,当然是先写一个测试,你是不是忘啦山羊的教诲,我们是测试驱动开发
现在我们就去写一个测试
打开 test
添加一个测试方法

def test_home_page_returns_correct_html(self):
        request= HttpRequest()     创建了一个HttpRequest对象
        response=home_page(request) 把这个对象传给视图home_page 得到响应
        html =response.content.decode('utf-8')  提取得到的结果是原始字节,调用decode 转换成字符串
        self.assertTrue(html.startswith('<html>))  希望响应开头
        self.assertIn("<title>To-Do<title>",html)    预期响应“To-Do” 
        self.assertTrue(html.endswith('</html>'))  响应结尾并关闭标签

运行查看结果
$ python manage.py test
Creating test database for alias ‘default’…
System check identified no issues (0 silenced).

ERROR: test_home_page_returns_correct_html (lists.tests.Test)

Traceback (most recent call last):
File “C:\Users\brw18\superlists\lists\tests.py”, line 15, in test_home_page_returns_correct_html
response = home_page(request)
TypeError: home_page() takes 0 positional arguments but 1 was given

Ran 2 tests in 0.003s
FAILED (errors=1)
Destroying test database for alias ‘default’…
1、结果提示我们home_page() 没有参数,但是我们传了一个
现在我们改动一下
def home_page(request):
pass
结果:
在这里插入图片描述
结果是没有这个对象属性,当然没有我们写的pass
为他添加
def home_page(request):
return HttpResponse()
结果:
在这里插入图片描述
结果为False,没有找到

我们为他添加
def home_page(request):
return HttpResponse(’’)
结果:
在这里插入图片描述
没有我们想要的

再次添加
def home_page(request):
return HttpResponse(‘To-Do’)
结果:
在这里插入图片描述
提示我们结尾没有找到
再次添加
def home_page(request):
return HttpResponse(‘To-Do’)
这次的结果是:
在这里插入图片描述
完全成功
是不是很繁琐
但是在这样测试/编写代码/测试/编写代码的循环中 我们确保了我们每一步的正确性。
这就是单元测试/编写代码循环
1、运行测试看他如何失败
2、该少量代码,让当前失败测试通过

收获感触
**确实如作者所说,我们开发中不就是这样写代码的吗?
一步错步步错,但是从走出的第一步就去验证改正,只会越来越正确,虽然后续还会有错误产生,但是我们确定前面是正确的,只不过是我们刚刚这一步错误了。

猜你喜欢

转载自blog.csdn.net/weixin_43147867/article/details/86495504