python - 使用用户对象在 Django 中测试表单

标签 python django unit-testing testing django-forms

我正在进行测试 - 我在 clean 方法中有一个带有大量逻辑的小表单。

我的测试是这样的:

class DependentFormTest(TestCase):

    def test_dependent_form_birthdate_out_of_range(self):
        form_data = {
            'first_name': 'Bill',
            'last_name': 'Robusin',
            'birth_date': '10/12/1801',
            'gender': 'Male',
            'relationship': 'dependent',
            'street_address_1': '123 Any lane',
            'city': 'Billson',
            'state': 'WA',
            'zip': '50133',
        }
        form = DependentForm(data=form_data)
        self.assertFalse(form.is_valid())

在我的 clean 方法中,我可以访问有关当前用户的一些信息。失败的片段如下所示:

user_benefit = Benefit.objects.get(user=self.user)

这一行是导致我的测试出错并出现以下错误的原因:

利益匹配查询不存在

这是真的,因为在测试中“用户”是“无”。

如何在我的测试中设置用户以便我可以测试此表单的有效性?

最佳答案

在您的测试 setUp() 方法中,您可以创建一个用户用于测试目的。然后重复使用它。

据我了解,您的用户来自请求。因此,您需要使用 django 测试客户端登录并将数据发布到您的表单中。

关于python - 使用用户对象在 Django 中测试表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46730824/

相关文章:

python - 从元组列表的列表构造稀疏矩阵

python - 艰苦学习Python练习20

Java 单元测试 - 适当的隔离?

unit-testing - Grails 2.0:发布测试flash.message

python - Pandas 合并数据框创建 nan 列

python - 如何将字典列表转换为....?

django - 动态创建 Django View 不好吗?

python - 在 Django 中使用 uuid 查询对象

python - RuntimeError : 'list' must be None or a list, not <class 'str' > while trying to start celery worker

c++ - 如何在不刷新的情况下运行 ESP32 的单元测试?