相关疑难解决方法(0)

使用ImageField的Django测试模型

我需要测试我的Django应用程序的Photo模型.如何使用测试图像文件模拟ImageField?

tests.py

class PhotoTestCase(TestCase):

    def test_add_photo(self):
        newPhoto = Photo()
        newPhoto.image = # ??????
        newPhoto.save()
        self.assertEqual(Photo.objects.count(), 1)
Run Code Online (Sandbox Code Playgroud)

python testing django mocking

38
推荐指数
5
解决办法
1万
查看次数

Django:如何对更新视图/表单进行单元测试

我正在尝试对更新表单和视图进行单元测试。我将Django Crispy Forms用于创建和更新表单。UpdateForm继承了CreateForm并对提交按钮文本进行了少量更改。CreateView和UpdateView非常相似。它们具有相同的模型,模板和success_url。它们的区别在于它们使用各自的形式,CreateView继承django.views.generic.CreateView,UpdateView继承django.views.generic.edit.UpdateView。

该网站运行良好。我可以毫无问题地创建和编辑对象。但是,下面显示的第二项测试失败。如何测试我的UpdateForm?

任何帮助,将不胜感激。谢谢。

该测试通过:

class CreateFormTest(TestCase):

    def setUp(self):
        self.valid_data = {
            'x': 'foo',
            'y': 'bar',
        }

    def test_create_form_valid(self):
        """ Test CreateForm with valid data """
        form = CreateForm(data=self.valid_data)
        self.assertTrue(form.is_valid())
        obj = form.save()
        self.assertEqual(obj.x, self.valid_data['x'])
Run Code Online (Sandbox Code Playgroud)

该测试失败:

class UpdateFormTest(TestCase):
    def setUp(self):
        self.obj = Factories.create_obj()  # Creates the object

    def test_update_form_valid(self):
        """ Test UpdateForm with valid data """
        valid_data = model_to_dict(self.obj)
        valid_data['x'] = 'new'
        form = UpdateForm(valid_data)
        self.assertTrue(form.is_valid())
        case = form.save()
        self.assertEqual(case.defendant, self.valid_data['defendant']
Run Code Online (Sandbox Code Playgroud)

python forms django unit-testing

5
推荐指数
1
解决办法
1429
查看次数

标签 统计

django ×2

python ×2

forms ×1

mocking ×1

testing ×1

unit-testing ×1