python - 有没有办法配置 Python 日志记录来记录断言失败的内容或上下文?

标签 python testing logging flask assertions

我正在运行测试用例,我想以这样一种方式设置我的日志记录,它会自动记录所有测试失败的案例 - 但我想获得自定义响应,例如,如果一个断言失败 我想得到对我的测试发出的请求的响应,而不仅仅是断言失败的默认消息。目前只知道断言失败,不知道程序返回了什么。

假设我正在测试一个 View 函数,例如我有一个看起来大致像这样的测试(整个 TestCase 类的一部分)

def edit_profile(self):
    return self.app.get("/edit_profile", follow_redirects=True)

def test_edit_profile(self):
    rv = self.edit_profile()
    assert "Edit your profile admin" in rv.data

有没有办法让我配置日志记录,使每次测试失败都会将 rv.data 记录到日志文件中?

目前我只是简单地在之前测试失败的断言前加上logging.debug(rv.data),再次运行测试,调试问题,然后继续,但是这样是无效的,很容易忘记那些logging。 debug(),如果我有一个功能可以在测试请求失败时自动记录我的网页响应,它会更快。

最佳答案

self.assertIn('Edit your profile admin', rv.data, msg=rv.data)

使用assertWhatever 方法。我不完全理解为什么,但您不应该在 unittest 中使用 assert 语句进行断言。 (其他框架允许您使用 assert 进行断言。)

作为引用,将消息添加到 assert 断言的工作方式如下:

assert 'Edit your profile admin' in rv.data, rv.data

关于python - 有没有办法配置 Python 日志记录来记录断言失败的内容或上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18088879/

相关文章:

Python:为什么正则表达式比 replace() 方法慢?

python - 在 Django 的管理器中验证对象属性

python - 使用 python 2.6.6 流式传输推文时出现连接错误

javascript - 我可以在 Jest `expect.stringContaining()` block 中使用 `.toHaveBeenCalledWith()` 吗?

unit-testing - Go 中的测试是并行执行还是一个一个执行?

ruby-on-rails - 填充常量值表

logging - 带有 gorilla 复用器的 Go 记录器装饰器

c# - Microsoft 企业日志记录应用程序 block - 读取日志文件

oracle - 如何在oracle 10g 中为存储过程创建错误日志?

python - 用你类(class)的 __mul__ 覆盖其他 __rmul__