随笔分类 - django
摘要:现在让我们来解决我们真正的问题,即我们的设计只允许一个全局列表。 我将演示一个关键的TDD技术:如何使用一个渐进的、循序渐进的过程来适应现有的代码,这些过程将您从工作状态转移到工作状态。测试山羊,而不是重构猫。 必要时采用小型设计 让我们考虑一下我们希望如何支持多个列表,但实际上,我们希望对此进行扩
阅读全文
摘要:隐示等待和显示等待 我们看看在功能测试中function_tests.py中的 time.sleep 这就是所谓的“显性等待”。这与“隐式等待”形成对比:在某些情况下,selenium会在认为页面正在加载时尝试“自动”等待您。 它甚至提供了一个名为隐式等待的方法,让您可以控制如果您向它请求一个似乎还
阅读全文
摘要:前面遗留的问题,首先时功能测试运行结束后的清理;其次是目前我们的待办清单只允许创建一个大家公用的清单。 如何隔离测试,运行功能测试后待办事项一直存在于数据库中,这会影响下一次测试。 运行单元测试时,Django的测试运行程序会自动创建一个全新的测试数据库(和应用真正使用的数据库不同)。 运行每个单元
阅读全文
摘要:Django生成一个很有帮助的错误信息,大意是说没有正确设置数据库。 你可能会有疑惑,为什么在单元测试一切都运行ok,这是因为Django为单元测试创建了专用的测试数据库——这是Django中Testcase所做的神奇事情之一。 为了设置好真正的数据库,要创建一个数据库,SQlite数据库只是硬盘中
阅读全文
摘要:前面提到的问题中在表格中显示多个待办事项 是最后一个容易解决的问题。要编写一个新单元测试,检查模板是否也能显示多个待办事项: lists/tests.py 运行测试和预期一样会失败 Django的模板句法中有一个用于遍历列表的标签,即{% for .. in .. %};可以使用下面的方式使用这个标
阅读全文
摘要:处理完POST请求后重定向 代码中new_item_text = ''的写法不怎么样。解决第二个问题时候,顺带把这个问题也解决了。 人们都说处理完post请求后一定要重定向,接下来就实现这个功能吧。修改针对保存POST请求数据的单元测试,不让它渲染包含待办事项的响应,而是重定向到首页。 不需要再拿响
阅读全文
摘要:要修改针对首页中的POST请求的测试。希望视图把新添加的待办事项存入数据库,而不是直接传给响应。 为了测试这个操作,要在现有的测试方法test_can_save_a_post_request中添加3行新代码 代码解析: 1、检查是否把一个新Item对象存入数据库,objects.count()是ob
阅读全文
摘要:在Django中,ORM的任务是模型化数据库。 创建数据库其实是由另一个系统负责的叫做迁移。 迁移的任务是根据你对models.py文件的改动情况,添加或删除表和列。 可以把迁移想象成数据库使用的版本控制系统,后面会看到,把应用部署到线上服务器审计数据库时,迁移十分有用。 现在只需要知道如何创建第一
阅读全文
摘要:ORM—对象关系映射器,是一个数据抽象层,描述存储在数据库中的表,行和列。处理数据库时,可以使用熟悉的面向对象方式,写出更好的代码。 在ORM的概念中,类对应数据库中的表,属性对应列,类的单个实例表示数据库中的一行数据。 Django对ORM提供了良好的支持,学习ORM的绝佳方法是单元测试中使用她,
阅读全文
摘要:从视图的Python代码中把变量传入HTML模板。 模板中使用哪种句法引入Python对象,要使用的符号{{...}},它会以字符串的形式显示对象: 怎么测试视图函数为new_item_text传入的值正确呢?怎么把变量传入模板呢? 可以在单元测试中实际操作一遍找出这两个问题的答案。(前面我们用到了
阅读全文
摘要:之前的代码还没有为表单指定action=属性,因此提交表单默认返回之前渲染的页面,即“/”,这个由视图函数home_page处理。下面修改这个视图函数,让它能处理POST请求。 这意味着要为视图函数home_page编写一个新的单元测试,打开文件 lists/tests.py 在HomePageTe
阅读全文
摘要:要获取用户输入的待办事项,发送给服务器,这样才能使用某种方式保存待办事项,然后在显示给用户查看。 上次运行测试指出无法保存用户的输入。现在,要使用HTML post请求。 若想让浏览器发送POST请求,要给<input>元素指定name=属性,然后把他放在<form>标签中,并为<form>标签指定
阅读全文
摘要:现在的功能测试还是失败的,继续修改代码,让其通过。因为HTML现在保存在模板中,可以尽情修改,无需编写额外的单元测试。我们需要一个<h1>元素 修改:lists/templates/home.html 功能测试(前提需要先运行服务器 # python manage.py runserver) 报错:
阅读全文
摘要:之前写的lists/tests.py中的单元测试,要查找特定的HTML字符串,但这不是测试HTML的高效方法。 单元测试规则之一“不测试常量”,编写断言检测HTML字符串中是否有制定的字符串序列,不是单元测试应该做的。 单元测试要测试的其实时逻辑,流程控制和配置。 Python代码中插入原始字符串不
阅读全文
摘要:学习系列5中的单元测试有报错信息,这儿来编写functional_tests.py文件,扩充其中的功能测试 测试一下 python functional_tests.py 代码提交
阅读全文
摘要:打开lists/tests.py编写 以上代码在Django1.x版本和2.1版本运行情况相同。 保证编写的代码无误,每次改动的幅度就要尽量小。这样确保每一个部分有对应的测试监护。 如下改动lists/views.py: 再次编写代码(只需要对比贴出代码中不同的地方) 运行测试 继续编写 运行测试
阅读全文
摘要:首页视图编写 终端运行 编写应用代码,解决上面的问题 lists/views.py 再次运行测试 依旧有报错信息。 接下来在urls.py文件中定义如何把URL映射到视图函数上,在文件夹superlists/superlists中有个主urls.py文件,这个文件应用于整个网站。 修正 lists/
阅读全文
摘要:在创建仓库之前,在项目superlists中新建一个Python文件,命名为functional_tests.py,里面的内容如下: 现在运行或许会报一些错误。或许没有安装selenium,没有安装Firefox驱动。 在解决问题之前,需要创建一个版本控制器将管理好在开发过程中的代码。 以后我们会把
阅读全文
摘要:在Django环境中安装selenium 查看版本selenium版本号 或者:
阅读全文