[英]Pytest Assert vs Python Assert
我正在使用pytest 断言来验证数据和数据条件。 我想知道这是否与Python 断言相同,使用 pytest 断言来验证任何测试条件是否是一种好习惯。
我找不到任何地方——不是——使用 pytest 断言。
谢谢您的帮助
从pytest 文档中,断言只是标准的 python 断言。 不过,其他包可能有自己的带有自定义功能的断言方法。
请注意,如果您使用 python 的断言,您可能需要检查某些对象的__eq__
方法的实现,因为某些对象的默认设置是仅检查它们是否指向 memory 中的相同地址。
例如,假设您有一个 class 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 因为它们是两个独立的对象。
但是,您可以像这样覆盖 class 中的__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。
其他一些包可能有自己的断言 function 和一组对象,其中此功能由断言显式处理。
至于使用哪个,这主要取决于您的偏好或与您合作的其他人。 最佳做法是使用您的同事使用的相同方法。 除此之外,我更喜欢基本的 python 函数,因为大多数人应该知道如何使用它们,这对于其他软件包可能不正确。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.