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别名为assertCountEqualTestCase.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 |