django框架中简化测试表单的模块

django-forms-test的Python项目详细描述


Django框架中简化测试表单的模块

安装

您只需使用pip

pip install django-forms-test

然后将其导入测试脚本,如下所示:

from django_forms_test import field, cleaned, FormTest

用法

您将创建FormTest的子类,它是 django.test.TestCase,这样您就可以按照习惯添加测试。到 属性form分配要测试的窗体的类。 required_fields应该是表单所需的字段列表。

classYourClass(FormTest):form=YourFormrequired_fields=['email','message']

可以使用名称和字段的元组而不是字段的名称 键入。可用的字段类型是URLTEXTPASSWORDUSERNAMEEMAIL。字段类型用于附加检查 允许的字段值(例如,表单不应接受无效的URL)。这个 TEXT是默认类型,没有其他验证。

classYourClass(FormTest):form=YourFormrequired_fields=[('email',field.EMAIL),'message']# same as ('message', field.TEXT)

为了测试窗体的清理方法,可以使用decorator cleaned,它接受输入字段值作为参数并传递 它们按你的功能清洗过了。

classYourClass(FormTest):form=YourForm@cleaned(nick='  Bob ')deftest_strip_nick(self,nick):self.assertEqual(nick,'Bob')

示例

您将此编码:

classSaveFormTest(FormTest):form=SaveFormrequired_fields=['title','tags',('url',field.URL)]@cleaned(tags='one, two')deftest_cleaning_tags(self,tags):self.assertIsInstance(tags,list)self.assertEqual(len(tags),2)self.assertEqual(tags[1],'two')@cleaned(description='')deftest_cleaning_description(self,description):self.assertIsNone(description)

而不是这个:

classSaveFormTest(TestCase):data={'title':'some title','url':'http://some.url','tags':'some tags',}deftest_valid_form(self):form=SaveForm(self.data)self.assertTrue(form.is_valid())deftest_invalid_url(self):my_data=copy(self.data)my_data['url']='invalid url'form=SaveForm(my_data)self.assertFalse(form.is_valid())deftest_required_fields(self):forfieldin('title','url','tags'):withself.subTest(field=field):my_data=copy(self.data)my_data[field]=''form=SaveForm(my_data)self.assertFalse(form.is_valid())deftest_cleaning_tags(self):form=SaveForm({'tags':'one, two'})form.is_valid()tags=form.cleaned_data['tags']self.assertIsInstance(tags,list)self.assertEqual(len(tags),2)self.assertEqual(tags[1],'two')deftest_cleaning_description(self):form=SaveForm({'description':''})form.is_valid()description=form.cleaned_data['description']self.assertIsNone(description)

你把这个编码:

classRegisterFormTest(FormTest):form=RegisterFormrequired_fields=[('username',field.USERNAME),('email',field.EMAIL),('password',field.PASSWORD),('confirm_password',field.PASSWORD),]

而不是这个:

classRegisterFormTest(TestCase):data={'username':'some_username','email':'some@email.com','password':'some password','confirm_password':'some password',}deftest_valid_form(self):form=RegisterForm(self.data)self.assertTrue(form.is_valid())deftest_invalid_username(self):my_data=copy(self.data)my_data['email']='invalid email'form=RegisterForm(my_data)self.assertFalse(form.is_valid())deftest_invalid_email(self):my_data=copy(self.data)my_data['email']='invalid email'form=RegisterForm(my_data)self.assertFalse(form.is_valid())deftest_required_fields(self):forfieldin('username','email','password','confirm_password'):withself.subTest(field=field):my_data=copy(self.data)my_data[field]=''form=RegisterForm(my_data)self.assertFalse(form.is_valid())deftest_password_safe_input(self):form=RegisterForm()input_type=form['password'].field.widget.input_typeself.assertEqual(input_type,'password')input_type=form['confirm_password'].field.widget.input_typeself.assertEqual(input_type,'password')

公告

我这么做只是为了我自己,所以有很多事情 它们仍然不见了,在我需要它们之前我可能不会实现它们。 但是,如果您错过了什么,请随时发送拉取请求。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java 安卓碎片问题   java获取通过字符串删除的内容。replaceAll()   java中的三角形数   JavaSpringbean作用域:会话和全局会话   java为什么JavaBeans不序列化类型列表中的属性?   java无法使用Spring和Thymeleaf在视图上传输对象   Java中变量内部的变量   java在Eclipse上调整黄盒大小并保持其大小   java使用Jackson将名称-值对数组反序列化为对象   安卓 Java多变量长度参数   java JavaFX版本的“isDescendingFrom(组件a、组件b)”   java如何在春季发送多个PDF?   java以不同的格式为联系人分配相同的号码   如何从打包到自己的java库中访问资源的文件。罐子   java模块化反射公共闭包原理   java应用程序在使用进程时停止响应。等待()   java React setState不工作,出现错误