Django应用的自定义TestCases和其他测试辅助工具
项目描述
incuna-test-utils
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_request
给request
一个session
。create_user
使用AnonymousUser
或在TestCase
上设置的user_factory
属性返回一个user
。user_factory
应该有一个返回user
的create
方法。推荐使用factory_boy
。create_request
将 Django 的RequestFactory
封装起来,以提供有用的默认设置。它返回一个具有user
和_messages
属性的request
。它还可以在request
上设置DATA
和session
。
integration.BaseAdminIntegrationTestCase
BaseAdminIntegrationTestCase
提供了一个 TestCase
用于测试 django 管理员操作,例如 add
、change
、changelist
和 delete
。 BaseAdminIntegrationTestCase
应该被继承,并且应该定义两个属性
- 一个用于创建认证客户端的
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
,调用TestCase
的view
并返回一个response
。render_to_str
使用一个request
、response.template_name
和response.context_data
来渲染一个response
。如果没有提供request
,render_to_str
使用response.request
。access_view_and_render_response
封装了access_view
和render_to_str
。它还检查response.status_code
是否符合预期。默认的expected_status
是200
(HTTP_OK
)。assert_presence
检查一个项目是否出现在一个容器中。assert_count
检查一个项目在一个容器中出现的次数是否符合预期。assert_presence_multiple
和assert_count_multiple
在单个方法调用中运行一个或多个断言。render_view_and_assert_content
和render_view_and_assert_content_counts
将access_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_active
、is_staff
和 is_superuser
都设置为 True
。该工厂还定义了一个后置钩子,该钩子设置了一个默认密码,可以通过 raw_password
访问。
feincms_page.PageFactory
这个工厂可以用来创建 Feincms
的 Page
模型的实例。
兼容性
compat
提供了一些对跨版本代码测试有用的辅助工具
DJANGO_LT_19
在django.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的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | cc8194d275bc39b94a62c737d58a8df506399778c806a0f465b9db725286927d |
|
MD5 | bf8ff3674f126c4fb9735868e64ad7c7 |
|
BLAKE2b-256 | 01e8619c6f28d32782f153b1f1325a8d4052c27b208ebc740331188fa5797c47 |
incuna_test_utils-8.0.0-py2.py3-none-any.whl的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 34b3f3a1f450bb96c646ecf029f4ea880ea5db25217659ec4f18f060c38dd5ae |
|
MD5 | ab37b50712d44c5200acb51aa88b406a |
|
BLAKE2b-256 | c2b8a8b660aceeca49bcecf0d77a9f47b339ee206043e2c06652b13aec77b9cd |