跳转到主要内容

Django应用的自定义TestCases和其他测试辅助工具

项目描述

incuna-test-utils

Build Status

Incuna Test Utils 是用于测试Django应用的一系列TestCases和其他辅助工具。

TestCases

这些可以在 incuna_test_utils.testcases 中找到。

urls.URLTestCase

URLTestCase 添加了 assert_url_matches_view 以检查URL是否已配置为使用正确的视图。

request.BaseRequestTestCase

BaseRequestTestCase 为与Django视图一起工作提供了各种辅助方法。

  • get_view 返回一个基于在 TestCase 类上设置的 view 属性的可调用视图。 view 可以是基于函数的视图或基于类的视图。
  • view_instance 返回一个在 TestCase 类上设置的基于类的 view 属性的实例。 view_instance 接受一个 request*args 以及 **kwargs。这些被设置在 view 实例上。
  • add_session_to_requestrequest 一个 session
  • create_user 使用 AnonymousUser 或在 TestCase 上设置的 user_factory 属性返回一个 useruser_factory 应该有一个返回 usercreate 方法。推荐使用 factory_boy
  • create_request 将 Django 的 RequestFactory 封装起来,以提供有用的默认设置。它返回一个具有 user_messages 属性的 request。它还可以在 request 上设置 DATAsession

integration.BaseAdminIntegrationTestCase

BaseAdminIntegrationTestCase 提供了一个 TestCase 用于测试 django 管理员操作,例如 addchangechangelistdeleteBaseAdminIntegrationTestCase 应该被继承,并且应该定义两个属性

  • 一个用于创建认证客户端的 user_factory
  • 一个用于测试的 model

示例

from incuna_test_utils.testcases.integration import BaseAdminIntegrationTestCase


class TestUserAdmin(BaseAdminIntegrationTestCase):
    user_factory = factories.UserFactory
    model = ModelToTest

    def test_admin_add_page(self):
        response = self.get_admin_add_page()
        self.assertEqual(response.status_code, 200)

    ...

integration.BaseIntegrationTestCase

BaseIntegrationTestCase 扩展了 BaseRequestTestCase 并添加了一些对集成测试有用的辅助方法

  • access_view 创建一个 request,调用 TestCaseview 并返回一个 response
  • render_to_str 使用一个 requestresponse.template_nameresponse.context_data 来渲染一个 response。如果没有提供 requestrender_to_str 使用 response.request
  • access_view_and_render_response 封装了 access_viewrender_to_str。它还检查 response.status_code 是否符合预期。默认的 expected_status200HTTP_OK)。
  • assert_presence 检查一个项目是否出现在一个容器中。
  • assert_count 检查一个项目在一个容器中出现的次数是否符合预期。
  • assert_presence_multipleassert_count_multiple 在单个方法调用中运行一个或多个断言。
  • render_view_and_assert_contentrender_view_and_assert_content_countsaccess_view_and_render_response 的调用与结果上的多个断言调用结合起来。

api_request.BaseAPIRequestTestCase

BaseAPIRequestTestCase 扩展了 BaseRequestTestCase,用于与 django-rest-framework 一起使用。

  • create_request 被覆盖以使用 rest framework 的 APIRequestFactory。它还将 request.format 设置为 'json'。如果使用 auth=True(默认值)调用,create_request 还将调用 force_authenticate

工厂

这些可以在 incuna_test_utils.factories 中找到。它们需要 factory_boy

user.BaseUserFactory

这定义了一个简单的工厂,具有一个 email 属性。这可以与具有这些字段的自定义用户模型一起使用

    class UserFactory(BaseUserFactory):
        class Meta:
            model = User

user.BaseAdminUserFactory

BaseAdminUserFactory 定义了一个用户,其中 is_activeis_staffis_superuser 都设置为 True。该工厂还定义了一个后置钩子,该钩子设置了一个默认密码,可以通过 raw_password 访问。

feincms_page.PageFactory

这个工厂可以用来创建 FeincmsPage 模型的实例。

兼容性

compat 提供了一些对跨版本代码测试有用的辅助工具

  • DJANGO_LT_19django.VERSION 小于 1.9 时为 True
  • Python2AssertMixin 将 python 2.7 的断言方法别名设置为与 python 3 api 相匹配。
    • TestCase.assertItemsEqual 别名为 assertCountEqual
    • TestCase.assertRegexpMatches 别名为 assertRegex

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。

源分发

incuna-test-utils-8.0.0.tar.gz (19.1 kB 查看散列值)

上传时间:

构建分发

incuna_test_utils-8.0.0-py2.py3-none-any.whl (26.5 kB 查看散列值)

上传时间: Python 2 Python 3

支持者