我正在使用pytest断言来验证数据和数据条件。我想知道这是否与Python assert相同,并且使用pytest assert验证任何测试条件是否是一个好习惯。
我找不到任何地方-不能-使用pytest断言。
谢谢您的帮助
从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函数,因为大多数人应该知道如何使用它们,这对于其他软件包可能不是正确的。