Trace Bug 仅在 CI 中偶尔发生

2024-01-09

我在 python 代码中有一个奇怪的错误,这种错误只在 CI 中有时发生。

我们无法重现它。

测试代码在哪里:

response=self.admin_client.post(url, post)
self.assertEqual(200, response.status_code, response)

有时我们会收到 302,这是在表单保存后发生的。

我的调试想法是:

with some_magic_trace.trace() as trace:
    response=self.admin_client.post(url, post)
    self.assertEqual(200, response.status_code, trace)

跟踪应包含解释器执行的 python 行(文件名、行偏移量、行字符串)。

如何实施some_magic_trace.trace()?


The trace https://docs.python.org/3.5/library/trace.html#module-trace模块为您提供了一个非常简单的解决方案(与您所要求的不同,但足够简单,可以尝试一下。)

from trace import Trace

tracer = Trace()
response = tracer.runfunc(self.admin_client.post, url, post)
self.assertEqual(200, response.status_code, response)

一个更复杂的解决方案需要创建一个上下文管理器来保存跟踪并仅在异常时打印它,需要使用系统设置跟踪 https://docs.python.org/3.5/library/sys.html?highlight=settrace#sys.settrace。 您自己实现的模板可以是:

class MyTracer():

    def __init__(self):
        self.trace = None

    def newscope(self, frame, event, arg):
        ## real work should be done here, just minimal example
        self.trace.append((frame, event, arg))
        return None

    def pprint(self):
        ## real pretty printing of trace info should be done here
        print(self.trace)

    def __enter__(self):
        self.trace = []
        sys.settrace(self.newscope)
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        sys.settrace(None)
        if exc_type is not None:
            self.pprint()
            ## print some info gathered from exc_type, exc_val, exc_tb

然后你可以:

with MyTracer():
    response=self.admin_client.post(url, post)
    self.assertEqual(200, response.status_code, response)

这个想法是 MyTracer 实例有一个跟踪器方法newscope保存一些有用的信息self.trace。异常退出上下文时pprint方法被调用;在正常退出时,跟踪信息将被丢弃。

大部分工作都要在tracing方法中完成newscope。 可以找到一些跟踪函数的具体示例here https://pymotw.com/2/sys/tracing.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Trace Bug 仅在 CI 中偶尔发生 的相关文章

随机推荐

  • 适用于 ASP.NET 的恶意爬虫拦截器

    我刚刚偶然发现不良行为 http www bad behavior ioerror us 一个 PHP 插件 承诺通过阻止垃圾邮件和恶意爬虫访问该网站来检测它们 ASP NET 和 ASP NET MVC 是否存在类似的东西 我感兴趣的是完
  • 将 15 分钟数据重新采样为 1 分钟而不进行聚合

    我附上了基于季度的数据框的示例 我希望将其重新采样为每分钟而不进行任何聚合 输入数据框 Date CET Price 2020 01 01 11 00 50 2020 01 01 11 15 60 2020 01 01 11 15 100
  • ggplot:手动添加未映射的美观图例

    我想生成一个覆盖有点的条形图 其中两者都有单独的图例 另外 我想使用外部参数选择条形的颜色和点的大小aes 由于两者均未映射 因此不会生成图例 1 如何手动添加填充和尺寸图例 library ggplot2 d lt data frame
  • 以编程方式显示工具提示

    我开发了一个 WPF 示例项目 这是主窗口的 XAML 标记
  • 使用数据驱动测试使用 Mstest 名称代替数据行

    我使用 MsTests 和数据驱动方法进行测试 Excel是测试数据存储 测试结果不提供有关测试数据的任何信息 例如 结果如下 测试名称 数据行 5 我不清楚 如何自定义输出测试结果 例如 testname 测试数据 单词 数字或行命名 我
  • macOS Sierra Spotlight 扩展

    不幸的是 我无法在网上找到有关此主题的任何最新信息 类似于这里提出的问题 OS X Yosemite Spotlight 扩展 https stackoverflow com q 25130549 4295410 是否可以by now to
  • 在 CSS 标签后使用 HTML 来实现悬停状态

    我目前正在尝试将一些 html 传递到 css 中的 after 伪类中 以在链接悬停后添加一个箭头 我很久以前就在默认安装的 WordPress 主题中看到过这种做法 我觉得我必须错过一些简单的东西 a hover after conte
  • jQuery - 检测“x”分钟内没有任何操作并针对该事件运行函数(X 分钟内没有事件)

    如何检测用户在 X 分钟内没有执行任何操作并在此事件上运行函数 E G if no action from user for X minutes do stuff 任何建议都非常感激 现场演示 http jsfiddle net lokta
  • H2 数据库中的当前时刻

    如何获取H2数据库中实际的当前时钟时间 当前时刻 The CURRENT TIMESTAMP http h2database com html functions html current timestamp函数给出当前数据库事务开始的时刻
  • 在 odoo 8 服务器“--auto-reload”工作时

    实际上是在启动odoo 8服务器的命令中 它将提供 auto reload 选项 但实际上我不知道它是如何工作的以及何时工作 请给我一些指导 通常 如果更改 python 代码 则需要重新启动服务器才能应用新的更改 auto reload
  • 在wpf数据网格中调整列大小

    我目前正在开发一个WPF软件 我正在使用 WPF 并尝试允许列自动调整大小以适应数据网格 我使用了columnwidth 只要窗口未包含在滚动视图中 它就可以正常工作 如果它处于滚动视图中 则列的大小调整得非常大 这会导致数据网格的大小调整
  • OpenMP 中归约运算的执行顺序

    有没有办法知道 OpenMP 中归约运算符的执行顺序 换句话说 我想知道线程如何执行归约操作 是从左到右吗 当存在不是 2 的幂的数字时会发生什么 我想你会发现 OpenMP 只会减少关联操作 例如 and 如果您愿意 也可以是加法和乘法
  • 执行“pip install pycrypto”后,如何解决“没有名为‘Crypto’的模块”错误?

    基本上 我想带来Chemobot https chemistry stackexchange com users 28223 chemobot进入我自己的聊天室之一 它的创建者建议我应该运行 py我自己的机器上的脚本 我刚刚开始用 pyth
  • 我如何告诉 UserManager.FindByIdAsync(userid);包括关系?

    我使用 ASP NET Identity 和 Code First 向数据库添加了一个新属性及其相应的表 如下所示 public class ApplicationUser IdentityUser public virtual IColl
  • Java客户端-服务器:实时流式传输音频文件

    我正在制作一个基于客户端 服务器的音乐应用程序 例如spotify 以下是发送一个mp3 audio file给我的客户 我想要的是向我的客户端实时播放这个 mp3 音频文件为了实现这个目标需要改变什么 编辑 我在 stackoverflo
  • 如何为apache和django设置mod_wsgi?

    我知道关于这个主题的信息已经很多了 但是它们都相当笨拙 不是那么简单和富有表现力 谁能解释一下如何使用django与mod wsgi and apache mod wsgi 并不是特别适合运行 Python WSGI 应用程序 或者 如果您
  • 为什么 jquery 事件委托不起作用?

    我有以下 html ul li class active one li li class two li ul 以及以下 jquery contain contain going to use a lot contain on click l
  • 如何在 R 中的图表上构建趋势线

    我到处都检查过 人们引用了我无法理解的例子 是的 我有点慢 谁能解释一下如何在 R 中构建对数趋势线 这是工作示例 myds lt c 23 0415 13 1965 10 4110 12 2560 9 5910 10 7160 9 966
  • 在裸存储库上执行 git 命令

    在我的服务器上 我托管了一些我正在处理的裸 git 存储库 我想在我的网站上显示有关每个存储库的一些基本统计信息 现在 假设我想做一些简单的事情 例如列出存储库中的所有文件 在非裸 git 存储库上 这可以通过以下方式完成 git ls f
  • Trace Bug 仅在 CI 中偶尔发生

    我在 python 代码中有一个奇怪的错误 这种错误只在 CI 中有时发生 我们无法重现它 测试代码在哪里 response self admin client post url post self assertEqual 200 resp