Pytest声明与Python声明

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

我正在使用pytest断言来验证数据和数据条件。我想知道这是否与Python assert相同,并且使用pytest assert验证任何测试条件是否是一个好习惯。

我找不到任何地方-不能-使用pytest断言。

谢谢您的帮助

pytest assert
1个回答
0
投票

pytest docs起,断言只是标准的python断言。其他软件包可能具有自己的具有自定义功能的assert方法。

[请注意,如果您使用的是python的assert,则可能需要检查某些对象的__eq__方法的实现,因为某些对象的默认设置是仅检查它们是否指向内存中的相同地址。

例如,假设您有一个类TestClass,其中num是字符串,id是int

class TestClass:
    def __init__(self, name, id):
        self._name = name
        self._id = id

现在,如果您像这样实例化两个TestClass实例:

test1 = TestClass("test", 1)
test2 = TestClass("test", 1)

然后,assert test1 = test2默认为False,因为它们是两个单独的对象。

但是,您可以在此类中重写__eq__方法:

    class TestClass2:
        def __init__(self, name, id):
            self._name = name
            self._id = id

        def __eq__(self, other_test_class):
            return (self._name = other_test_class._name) and (self._id = other_test_class._id)

现在,如果您定义:

test1 = TestClass2("test", 1)
test2 = TestClass2("test", 1)

然后assert test1 == test2给出True。

某些其他程序包可能具有自己的断言功能和一组由断言显式处理此功能的对象。

关于使用哪个主要取决于您的偏好或与谁一起工作。最佳做法是使用与同事相同的方法。除此之外,我更喜欢基本的python函数,因为大多数人应该知道如何使用它们,这对于其他软件包可能不是正确的。

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