PythonPytest不显示断言差异

PythonPytest不显示断言差异,python,automated-tests,tdd,pytest,assert,Python,Automated Tests,Tdd,Pytest,Assert,以下测试: 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

以下测试:

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
self=,应为'pepe'
def assert_名称(自身,预期):
>断言self.name==应为
断言者
此消息信息量不大,因为它不会告诉您名称的值是什么,为什么?

来自:

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

您可以在导入模块之前通过调用来手动启用对导入模块的断言重写(在
conftest.py
中可以这样做)