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 中偶尔发生 的相关文章

  • openpyxl 2.4.2:保存后公式生成的单元格值为空

    我使用 openpyxl 打开文件 编辑一些单元格并保存更改 这是一个例子 import openpyxl book openpyxl load workbook sheet path sheet book active for row i
  • 使用 python 制作本地服务器应用程序的最佳方法

    我想要简单轻松地集成 python 和 vba 人们 如果他们在阅读本文后亲自见到我 阅读本文可能会杀了我 但我正在使用 django 开发服务器来实现此目的 有没有什么简单又好的方法 仅举个例子 我想使用 python 模块 openpy
  • Matplotlib 标准化颜色条 (Python)

    我正在尝试使用 matplotlib 当然还有 numpy 绘制轮廓图 它有效 它绘制了它应该绘制的内容 但不幸的是我无法设置颜色条范围 问题是我有很多图 并且需要所有图都具有相同的颜色条 相同的最小值和最大值 相同的颜色 我复制并粘贴了在
  • 有没有办法防止 Visual Studio 因特定方法中的异常而中断?

    我知道我可以根据异常的类型以及最终使用 异常 对话框捕获异常的事实来控制 Visual Studio 处理异常的方式 但是 我有一个在内部抛出 并捕获 一个库ArgumentOutOfRange当我调用特定方法时出现异常 抛出异常 并被库捕
  • 使用 Django 的 post_save() 信号

    我有两张桌子 class Advertisement models Model created at models DateTimeField auto now add True author email models EmailField
  • 如何将条目中的部分文本加粗并更改其背景颜色?

    我正在创建一个基于 Tkinter 的 GUI 它有一个 Entry 小部件 我想将其文本的一部分加粗并更改其背景颜色 但我不知道我该怎么做 如果我使用文本小部件 我可以只使用标签 但看起来它们不能与条目小部件一起使用 此代码使用文本小部件
  • Sorted(key=lambda: ...) 背后的语法[重复]

    这个问题在这里已经有答案了 我不太明白背后的语法sorted 争论 key lambda variable variable 0 Isn t lambda随意的 为什么是variable在看起来像的内容中陈述了两次dict 我认为这里的所有
  • Python3 查找 2 个列表中有多少个差异才能相等

    假设我们有 2 个列表 always具有相同的长度和always包含字符串 list1 sot sot ts gg gg gg list2 gg gg gg gg gg sot 我们需要找到 其中有多少项list2应该改变 以便它等于lis
  • 使用Python将图像转换为十六进制格式

    我的下面有一个jpg文件tmp folder upload path tmp resized test jpg 我一直在使用下面的代码 Method 1 with open upload path rb as image file enco
  • 字典中列表中仅有的几个索引的总和

    如果我有这种类型的字典 a dictionary dog white 3 5 black 6 7 Brown 23 1 cat gray 5 6 brown 4 9 bird blue 3 5 green 1 2 yellow 4 9 mo
  • 使用循环将对象添加到列表(python)

    我正在尝试使用 while 循环将对象添加到列表中 基本上这就是我想做的 class x pass choice raw input pick what you want to do while choice 0 if choice 1 E
  • Python int 太大,无法放入 SQLite

    我收到错误 OverflowError Python int 太大 无法转换为 SQLite INTEGER 来自以下代码块 该文件约25GB 因此必须分部分读取 length 6128765 Works on partitions of
  • urllib2.urlopen() 是否实际获取页面?

    当我使用 urllib2 urlopen 时 我在考虑它只是为了读取标题还是实际上带回整个网页 IE 是否真的通过 urlopen 调用或 read 调用获取 HTML 页面 handle urllib2 urlopen url html
  • 如何逐像素绘制正方形(Python,PIL)

    在空白画布上 我想使用 Pillow 逐像素绘制一个正方形 我尝试使用 img putpixel 30 60 155 155 55 绘制一个像素 但它没有执行任何操作 from PIL import Image def newImg img
  • Python 矩阵每一行的总和

    lista 1 2 3 4 5 6 7 8 9 print lista def filas lista res for elemento in lista x sum lista elemento res append x print re
  • Plotly:如何避免巨大的 html 文件大小

    我有一个 3D 装箱模型 它使用绘图来绘制输出图 我注意到 绘制了 600 个项目 生成 html 文件需要很长时间 文件大小为 89M 这太疯狂了 我怀疑可能存在一些巨大的重复 或者是由单个项目的 add trace 方法引起的 阴谋 为
  • Scrapy 蜘蛛无法工作

    由于到目前为止没有任何效果 我开始了一个新项目 python scrapy ctl py startproject Nu 我完全按照教程操作 创建了文件夹和一个新的蜘蛛 from scrapy contrib spiders import
  • Google App Engine 中的自定义身份验证

    有谁知道或知道我可以在哪里学习如何使用 Python 和 Google App Engine 创建自定义身份验证流程 我不想使用 Google 帐户进行身份验证 并且希望能够创建自己的用户 如果不是专门针对 Google App Engin
  • 如何对字符串列表进行排序?

    在 Python 中创建按字母顺序排序的列表的最佳方法是什么 基本回答 mylist b C A mylist sort 这会修改您的原始列表 即就地排序 要获取列表的排序副本而不更改原始列表 请使用sorted http docs pyt
  • 具有指定置信区间的 Seaborn 条形图

    我想在 Seaborn 条形图上绘制置信区间 但我已经计算出置信区间 如何让 Seaborn 绘制我的置信区间而不是尝试自行计算它们 例如 假设我有以下 pandas DataFrame x pd DataFrame Group 1 0 5

随机推荐

  • 适用于 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