我有一个自定义验证码字段。我想在测试期间从表单中删除该字段。
我最初的想法是在一个单独的设置文件中有一个 TESTING
变量,它将作为参数提供给测试运行器命令。然后,我可以做类似的事情:
class CaptchaForm(forms.Form):
notify_email = forms.EmailField(required=False)
if not settings.TESTING:
recaptcha = CaptchaField()
我相信这应该有效。
可能有更好的方法。有什么想法吗?
更新
在尝试了以下建议后,我将其添加到测试文件夹的 __init__.py
中:
from project.app.forms import CaptchaField
CaptchaField.clean = lambda x, y: y
这有效——无需创建共享的 TESTING
设置。这看起来可以接受吗?我有理由不这样做吗?
最佳答案
您可以在单元测试类的构造函数中禁用验证码。像这样:
class MyTest(unittest.TestCase):
def __init__(self, *args, **kwargs):
super(MyTest, self).__init__(*args, **kwargs)
settings.TESTING = True
或者,例如,您可以在此构造函数中禁用验证码字段验证。
关于python - Django:在测试模式下以不同方式定义表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4292398/