0

我正在 django 上开发网站我认为使用烟雾覆盖测试方法可能会发现大多数问题。但是(在大多数情况下)编写测试来检查每个应用程序、每个视图和每个 url 的响应代码都是 200 非常无聊(例如,当您并行开发几个站点时)。我有一个问题:我怎样才能自动化这个过程,可能存在一些完整的解决方案来为 django 生成一些常见的测试。

谢谢!

4

1 回答 1

0

最佳实践:

  • 如果它可以打破,它应该被测试。这包括模型、视图、表单、模板、验证器等。
  • 每个测试通常应该只测试一个功能。
  • 把事情简单化。您不想在其他测试之上编写测试。在将代码从存储库和暂存环境中提取或推送代码时运行测试,然后再推送到生产环境。
  • 升级到更新版本的 Django 时:

    - 本地升级,

    -运行你的测试套件,

    -修复错误,

    -PUSH 到 repo 和 staging,然后

    - 在发布代码之前再次进行测试。

https://realpython.com/blog/python/testing-in-django-part-1-best-practices-and-examples/

Django 提供了一小部分在编写测试时派上用场的工具。

测试客户端 测试客户端是一个 Python 类,它充当虚拟 Web 浏览器,允许您测试视图并以编程方式与 Django 驱动的应用程序交互。您可以使用测试客户端做的一些事情是:

  • 模拟 URL 上的 GET 和 POST 请求并观察响应——从低级 HTTP(结果标头和状态代码)到页面内容的所有内容。
  • 查看重定向链(如果有)并检查每个步骤的 URL 和状态代码。
  • 测试给定的请求是否由给定的 Django 模板呈现,模板上下文包含某些值。

概述和一个简单的例子

要使用测试客户端,请实例化 django.test.Client 并检索网页:

from django.test import Client
c = Client()
response = c.post('/login/', {'username': 'john', 'password': 'smith'})
response.status_code

200

response = c.get('/customer/details/')
response.content

'<!DOCTYPE html...'

正如这个例子所暗示的,您可以在 Python 交互式解释器的会话中实例化 Client。

测试响应 get() 和 post() 方法都返回一个 Response 对象。这个 Response 对象与 Django 视图返回的 HttpResponse 对象不同;测试响应对象有一些对测试代码验证有用的附加数据。

发出请求 使用 django.test.Client 类发出请求。

class Client(enforce_csrf_checks=False, **defaults)

异常 如果您将测试客户端指向引发异常的视图,则该异常将在测试用例中可见。然后,您可以使用标准的 try ... except 块或 assertRaises() 来测试异常。

提供的测试用例类 普通 Python 单元测试类扩展了 unittest.TestCase 的基类。Django 提供了这个基类的一些扩展: Django 单元测试类的层次结构(TestCase 子类) 在此处输入图像描述 Django 单元测试类的层次结构

有关详细信息和更多示例,请访问https://docs.djangoproject.com/en/1.7/topics/testing/tools/

于 2015-03-03T14:08:47.137 回答