为django生成常见的测试

时间:2014-07-24 07:29:48

标签: django testng smoke-testing

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

谢谢!

1 个答案:

答案 0 :(得分:0)

最佳做法:

  • 如果它可以破坏,应该进行测试。这包括模型,视图, 表格,模板,验证器等。
  • 每项测试通常只应测试一项功能。
  • 保持简单。你不想在上面写测试 其他测试。代码从PULLed或PUSHed中运行测试 在推动生产之前,在回收环境中进行回购。
  • 升级到较新版本的Django时:

    本地升级,

    - 运行你的测试套件,

    -fix bug,

    -PUSH到repo和staging,然后

    - 在发送代码之前再次进行分段测试。

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

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

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

  • 模拟网址上的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 ...除block或assertRaises()来测试异常。

提供测试用例类 普通的Python单元测试类扩展了unittest.TestCase的基类。 Django提供了这个基类的一些扩展: Django单元测试类的层次结构(TestCase子类) enter image description here Django单元测试类的层次结构

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