相关疑难解决方法(0)

使用图像对 Django 模型进行单元测试 - 不太理解 SimpleUploadedFile

我是一个测试菜鸟,我试图弄清楚如何编写一个测试来确认模型表单有效并将生成 的新实例Post,这是一个具有图像字段的模型。

我查看了其他一些SO 帖子,看起来我应该使用 SimpleUploadedFile 来模拟图像字段。我很难理解 SimpleUploadedFile 的工作原理(尚未找到此应用程序的任何简单文档),并且不同的 SO 帖子使用一些不同的语法。

我是否应该指向 Django 应用程序中某处保存的实际图像的真实文件路径,或者这是否会创建一个要使用的假文件?

测试.py

class CreatePost(TestCase):
    def test_create_post(self):
        data = {
            "content": "This is a post, I'm testing it out"
        }
        files_data = {
            "image": SimpleUploadedFile(name='test_image.jpg', content=open(image_path, 'rb').read(), content_type='image/jpeg') 
        }
        response = self.client.post("/new", data=data, files=files_data)
        self.assertEqual(Post.objects.count(),1)
        self.assertRedirects(response, 'index')
Run Code Online (Sandbox Code Playgroud)

模型.py

class Post(models.Model):
    content = models.CharField(max_length=260)
    timestamp = models.DateTimeField(auto_now_add=True)
    posted_by = models.ForeignKey(User, on_delete=models.CASCADE, related_name="posts")
    liked_by = models.ManyToManyField(User, blank=True, related_name="liked_posts")
    image = models.ImageField(upload_to='uploads/', verbose_name='image')
    def __str__(self):
        return f"{self.posted_by} posted …
Run Code Online (Sandbox Code Playgroud)

django unit-testing django-models django-testing

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

Django 1.7 ImageField 表单验证

我正在使用 Django 1.7 和 Python 3.4 编写单元测试。当file_data元素被注释掉时,下面的表单验证正常。随着file_data包括它不验证和测试失败。

from django.core.files.uploadedfile import SimpleUploadedFile
...

data = {
    'phone_number': '123456',
    'job': Job.objects.latest('id').pk,
}
file_data = {
    'portrait': SimpleUploadedFile(
        content=b'',
        content_type='image/jpeg',
        name='test.jpg',
    )
}
form = PersonForm(data, file_data)
self.assertTrue(form.is_valid())
Run Code Online (Sandbox Code Playgroud)

类似的代码适用FileField于我网站其他地方的上传测试。在 shell 中运行代码我得到以下内容form.errors'Upload a valid image. The file you uploaded was either not an image or a corrupted image.'因此,我认为问题出在contentcontent_type字段中。我试过在这个答案中使用 image-as-a-string无济于事。[编辑:图像作为字符串的方法实际上是答案,但我一定是实施得很糟糕。接受的答案已验证有效。]我在SimpleUloadedFile 源代码中找不到任何线索。

该表单在现实中运行良好,但我想确保它包含在未来维护的工作测试中。理想情况下,我想避免必须存在实际test.jpg文件,因为图像在我的.gitignore …

forms django validation django-tests django-1.7

4
推荐指数
1
解决办法
1341
查看次数

Django 更新表单的单元测试

我不明白如何管理表单和相关单元测试的更新,我真的很感激一些建议 =)

\n

我有一个公司模型,以及相关的非常简单的 CompanyForm:

\n
class Company(models.Model):\n    """\n    Company informations\n    - Detailed information for display purposes in the application\n      but also used in documents built and sent by the application\n    - Mail information to be able to send emails\n    """\n    company_name = models.CharField("nom", max_length=200)\n    comp_slug = models.SlugField("slug")\n    logo = models.ImageField(upload_to="img/", null=True, blank=True)\n    use_groups = models.BooleanField("utilise les groupes", default=False)   # Company uses groups or not\n    rules = [("MAJ", "Majorit\xc3\xa9"), ("PROP", "Proportionnelle")]   # Default management rule\n    rule = models.CharField(\n        "mode de …
Run Code Online (Sandbox Code Playgroud)

python forms django unit-testing django-tests

4
推荐指数
1
解决办法
1602
查看次数