在django中使用测试组件

举报
码乐 发表于 2024/01/25 10:19:34 2024/01/25
【摘要】 1 简介 整体而言,测试网站是一项复杂的任务, 因为它由几层逻辑组成——从 HTTP 级别的请求处理到模型查询, 再到表单验证和处理以及模板渲染。 幸运地,Django 提供了一个测试框架, 其中包含一个基于Python 标准 unittest 库构建的小型类层次结构。 1 django测试模块测试和测试方法有许多类型、级别和分类。最重要的自动化测试是:单元测...

1 简介

    整体而言,测试网站是一项复杂的任务,
    因为它由几层逻辑组成——从 HTTP 级别的请求处理到模型查询,
    再到表单验证和处理以及模板渲染。

    幸运地,Django 提供了一个测试框架,
    其中包含一个基于Python 标准 unittest 库构建的小型类层次结构。

1 django测试模块

测试和测试方法有许多类型、级别和分类。最重要的自动化测试是:

  • 单元测试

验证各个组件的功能行为,通常验证到类和功能级别。

  • 回归测试

重现历史错误的测试。每个测试最初运行以验证 bug 是否已修复,然后重新运行以确保在以后对代码进行更改后未重新引入该 bug。

  • 集成测试

验证组件分组在一起使用时的工作方式。集成测试知道组件之间所需的交互,但不一定知道每个组件的内部操作。它们可能涵盖组件的简单分组,直至整个网站。

尽管名称如此,但此测试框架适用于单元测试和集成测试。

Django 框架添加了 API 方法和工具来帮助测试 Web 和特定于 Django的行为。
这些允许您模拟请求、插入测试数据和检查应用程序的输出。

Django 还提供了用于使用不同测试框架的API(LiveServerTestCase)和工具,例如,您可以与流行的 Selenium 框架集成以模拟用户与实时浏览器的交互。

要编写测试,您需要从任何 Django(或 unittest)测试基类(SimpleTestCase、TransactionTestCase、TestCase、LiveServerTestCase)派生,

然后编写单独的方法来检查特定功能是否按预期工作(测试使用“assert”方法来测试表达式是否产生 or值,或者两个值是否相等,等等)。

启动测试运行时,框架将在派生类中执行所选的测试方法。

测试方法独立运行,在类中定义了常见的设置和/或拆卸行为,如下所示

我们访问测试客户端并发出GET请求。这模拟了您将使用浏览器发出的请求。

注意网络服务器无需运行即可进行单元测试。这测试客户端直接与Django框架一起使用的.

1.0 简单示例

大多数测试的最佳基类是django.test.TestCase。
此测试类在运行其测试之前创建一个干净的数据库,并在其自己的事务中运行每个测试函数。

该类还拥有一个测试客户端,可用于模拟用户在视图级别与代码交互。
在以下各节中,我们将重点介绍使用此 TestCase 基类创建的单元测试。

class DjTestClass(TestCase):
def setUp(self):
    # Setup run before every test method.
    pass

def tearDown(self):
    # Clean up run after every test method.
    pass

def test_something_that_will_pass(self):
    self.assertFalse(False)

def test_something_that_will_fail(self):
    self.assertTrue(False)

django.test.TestCase 类非常方便,但可能会导致某些测试比它们需要的慢,并非每个测试都需要设置自己的数据库或模拟视图交互。

熟悉可以使用此类执行的操作后,您可能希望将某些测试替换为可用的更简单的测试类。

2 小结

有关详细信息,包括测试不独立时该怎么做,请参阅DJANGO_TEST_PROCESSES

https://docs.djangoproject.com/en/4.0/ref/django-admin/#envvar-DJANGO_TEST_PROCESSES

参考 测试运行

	https://docs.djangoproject.com/en/4.0/ref/django-admin/#test
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。