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如何创建一个透明的Android应用程序,它将占据整个屏幕(位于状态/导航栏上方)?   Spark Java编码器。bean无法转换为Scala定义的类   java无法在可执行jar中加载资源   java如何避免Checkstyle的FinalClass模块在存在从基继承的内部类时抱怨?   文件Netbeans java小程序项目屏幕弹出   java解析增量特性的增量不会超过值1   java从另一个类创建一个对话框,该类在Android中有自己的线程   java如何在绘制线条时向JPanel添加背景网格?   方法来确定路径字符串是本地计算机还是Java的远程计算机   批处理文件在java中如何在执行命令之前设置目录   需要关于Java8流逻辑的帮助吗   java Guice注入和请求工厂:扩展ServiceLayerCorator