我正在使用coverage.py以 html 报告的形式检查单元测试的代码覆盖率。
coverage run -m pytest
coverage html
Run Code Online (Sandbox Code Playgroud)
该报告非常酷,它显示了总体覆盖率 % 和单个 .py 文件的覆盖率 %。每次我完成一些代码更改时,我都会重新运行覆盖率报告,以检查我的单元测试用例是否可以很好地覆盖新代码。然而,问题是我必须手动发现是否有任何 .py 文件的覆盖率特别低。
有什么方法或现有工具可以用来将测试覆盖率与之前/历史运行进行比较?这样我就可以轻松发现是否有任何 .py 文件的覆盖率显着下降。
基本上我在声明中的 PyCharm 中得到了以下警告math.isclose(a_val, b_val)
Expected type 'SupportsFloat', got 'Number' instead
最小的、可重现的示例如下。
from numbers import Number
import math
a_val = '123'
b_val = 123.4
if isinstance(a_val, Number) and isinstance(b_val, Number):
is_close = math.isclose(a_val, b_val, abs_tol=0.5)
Run Code Online (Sandbox Code Playgroud)
实际上,a_val和b_val来自其他地方,可以返回浮点型、整数或字符串。如果 和a_val都是b_val数字,我想检查它们是否几乎相等。否则,如果其中任何一个是字符串,则忽略它。
a_val问题 - 在通过和b_valto之前进行类型检查的最佳方法是什么math.isclose()?应该做什么改变来清除 PyCharm 警告?
给定一个带有Product Id和的DataFrame Amount:
df = pd.DataFrame([['504145', 12000.0],
['555933', 23010.5]],
columns=['Product Id', 'Amount'])
df
Out[1]:
Product Id Amount
0 504145 12000.0
1 555933 23010.5
Run Code Online (Sandbox Code Playgroud)
我想基于添加一个“说明”列Amount,该列应如下所示:
Product Id Amount Description
0 504145 12000.0 Amount is 12000.0
1 555933 23010.5 Amount is 23010.5
Run Code Online (Sandbox Code Playgroud)
当我使用f字符串格式设置时,结果是将整个列Amount作为一个序列进行聚合,而不是将特定行的值用于字符串连接:
df['Description'] = f'Amount is {df["Amount"].astype(str)}'
df
Out[2]:
Product Id Amount Description
0 504145 12000.0 Amount is 0 12000.0\n1 23010.5\nName: Am...
1 555933 23010.5 Amount is 0 12000.0\n1 23010.5\nName: Am...
Run Code Online (Sandbox Code Playgroud)
但是,使用+以下命令进行简单的字符串连接也可以正常工作: …
抱歉,如果这是重复的帖子 - 但我找不到相关的帖子
from random import seed
seed(100)
P = pd.DataFrame(np.random.randint(0, 100, size=(1000, 2)), columns=list('AB'))
Run Code Online (Sandbox Code Playgroud)
我想要的是P按列的四分位数/分位数/十分位数/等进行分组A,然后按组计算聚合统计数据(例如mean)。我可以将列的十分位数定义为
P['A'].quantile(np.arange(10) / 10)
Run Code Online (Sandbox Code Playgroud)
我不知道如何对 的十分位数进行分组A。提前致谢!
python ×4
dataframe ×2
pandas ×2
python-3.x ×2
coverage.py ×1
f-string ×1
pycharm ×1
unit-testing ×1