17

我在 django 中有以下 test.py 文件。你能解释一下这段代码吗?

from contacts.models import Contact
...
class ContactTests(TestCase):
    """Contact model tests."""

    def test_str(self):

        contact = Contact(first_name='John', last_name='Smith')

        self.assertEquals(
            str(contact),
            'John Smith',
        )
4

6 回答 6

29
from contacts.models import Contact  # import model Contact
...
class ContactTests(TestCase):  # start a test case
    """Contact model tests."""

    def test_str(self):  # start one test

        contact = Contact(first_name='John', last_name='Smith')  # create a Contact object with 2 params like that

        self.assertEquals(  # check if str(contact) == 'John Smith'
            str(contact),  
            'John Smith',
        )

基本上它会检查 str(contact) == 'John Smith',如果不是,则 assert equal 失败并且测试失败,它会在该行通知您错误。

换句话说, assertEquals 是一个检查两个变量是否相等的函数,用于自动化测试:

def assertEquals(var1, var2):
    if var1 == var2:
        return True
    else:
        return False

希望能帮助到你。

于 2013-07-29T09:42:32.827 回答
17

assertEquals是 的(不推荐使用的)别名TestCase.assertEqual,它是的方法unittest.TestCase

它形成一个测试断言;wherestr(contact)必须等于才能'John Smith'通过测试。

自 2010 年以来,带有 的表单s已被标记为已弃用,但实际上并未将其删除,目前也没有具体承诺将其删除。如果您在启用弃用警告的情况下运行测试(按照PEP 565 中的建议),您会看到一条警告:

test.py:42: DeprecationWarning: Please use assertEqual instead.
  self.assertEquals(
于 2013-07-29T09:41:38.357 回答
1

assertEquals自 Python 3.2 起已弃用,您应该使用assertEqual(no s)。

pytest

于 2019-11-11T03:35:20.163 回答
0

__str__如果您的contact对象返回“John Smith” ,则 assertEquals 会将您的测试设置为通过。这是单元测试的一部分,你应该查看官方文档

于 2013-07-29T09:40:45.317 回答
0

句法:assertEqual(first, second, msg=None)

测试第一个和第二个是否相等。如果值比较不相等,则测试将失败。此外,它还将检查 first 和 second 是否完全相同,并且是 list、tuple、dict、set、frozenset 或 unicode 之一。

在您的情况下,它将检查将检查if str(contact) == 'John Smith',如果不是,则断言等于失败。

于 2016-01-22T11:28:38.577 回答
0

assertEquals 测试两个变量是否相等。

于 2017-10-10T05:52:44.767 回答