为什么使用Django的assertInHTML()方法的测试用例失败?

问题描述 投票:0回答:1

鉴于以下Django测试用例,为什么会失败?同样重要的是,我可以做些什么来测试HTML元素<form class="bc-form" id="update_template" action="" method="get" novalidate>的存在?

from django.test import TestCase
class Test_assertInHTML(TestCase):
    def test_something(self):
        needle = '<form class="bc-form" id="update_template" action="" method="get" novalidate>'
        haystack = '''<html>
                <form class="bc-form" id="update_template" action="" method="get" novalidate>
                    <table>
                        <tbody>
                            <tr><th>Template Name </th><td><select name="name" id="id_name"></select></td></tr>
                            <tr><th>Format </th><td><select name="format" id="id_format">
                                <option value="E">Email</option>
                                <option value="S">SMS</option>
                                </select>
                            </td></tr>
                            <tr><th>The message </th><td><textarea name="message" cols="40" rows="10" required id="id_message"></textarea></td></tr>
                        </tbody>
                    </table>
                    <input type="submit" value="Submit">
                </form>
            </html>'''
        self.assertInHTML(needle, haystack, count=1)
python django unit-testing
1个回答
1
投票

你的针是一个不完整的HTML片段,它不是有效的HTML。

documentation for assertInHTML声明两个参数(针和干草堆)必须是有效的HTML。解析器首先验证HTML并丢弃任何无效的内容 - 因此您的测试失败。

如果您只想测试渲染开始表单标记,那么您将需要进行简单的字符串比较而不是使用assertInHTML

© www.soinside.com 2019 - 2024. All rights reserved.