Py学习  »  Python

Python pytest不显示断言差异

vecin • 5 年前 • 1526 次点击  

以下测试:

def test_something():
    assert "ddd" == "pepe"

使用pytest运行时会显示以下错误消息:

E       AssertionError: assert 'ddd' == 'pepe'
E         - ddd
E         + pepe

但是,如果我们将assert方法移动到另一个文件 assertion.py

class CustomerAssertor(object):
    def __init__(self,name):
        self.name =name

    def assert_name(self,expected):
        assert self.name ==expected

我们把测试改为:

from sql_gen.test.utils.assertion_util import CustomerAssertor

def test_something():
    CustomerAssertor("ddd").assert_name("pepe")

现在我得到以下错误:

self = <assertions.CustomerAssertor object at 0x7fbcc3d31588>, expected = 'pepe'

    def assert_name(self,expected):
>       assert self.name ==expected
E       AssertionError

这条消息没有告诉你名字的价值是什么,那么信息量就少了,为什么?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54116
 
1526 次点击  
文章 [ 1 ]  |  最新文章 5 年前
user2357112 supports Monica
Reply   •   1 楼
user2357112 supports Monica    6 年前

docs :

报告失败断言的详细信息是通过在运行断言语句之前重写它们来实现的。重写的断言语句将内省信息放入断言失败消息中。 pytest 只重写由其测试收集过程直接发现的测试模块,因此 .

您可以通过调用 register_assert_rewrite 在你导入它之前(一个很好的地方 conftest.py