gpt4 book ai didi

python-3.x - 使用 Pytest 进行单元测试时断言值 None 错误

转载 作者:行者123 更新时间:2023-12-03 15:56:10 27 4
gpt4 key购买 nike

一旦测试数据通过测试函数运行,我正在尝试对我的预期数据帧输出与结果数据帧的相等性进行非常简单的断言。但是,我没有比较它们是否相同,而是没有。

我的任何其他使用数据帧的测试都没有这个问题。我还可以打印出预期和结果的数据框,所以我知道它们都存在。最后,我什至可以通过该函数运行完整的生产数据,并按预期输出。

我想我错过了一些东西,但我不确定是什么。除了玩它之外,我还没有真正尝试过任何其他东西。我认为这与数据帧的结构有关。

职能

def get_valid_postal_code(postal_code):
valid_pc = len(postal_code) == 6 and postal_code[0:5:2].isalpha() and postal_code[1:6:2].isnumeric()
return valid_pc

def clean_postal_codes(sales):
sales = sales.dropna(subset=['Postal_Code']).copy()
sales['Postal_Code'] = sales['Postal_Code'].str.replace(" ", "")
sales = sales[sales['Postal_Code'].apply(get_valid_postal_code)]
sales['Postal_Code'] = [x.upper() for x in sales['Postal_Code']]
return sales

测试功能
def test_clean_postal_codes():
test_data = pd.DataFrame(
[[344, 'a0a 0a0', 3000], [344, 'a0a 0a0', -2000], [484, 'A0A 0a0', 1000], [494, 'A0a 0A0', 1000],
[700, 'A0A0A0', 1000], [900, 'A0A0A0', 1000], [50, 'Not null', 2352], [600, 'asdffa', 23523],
[634, '3HN3H3', 8839], [32, '3523', 238], [432, 'M5N22H', 2352]],
columns=['Store_Num', 'Postal_Code', 'Sales']
)
expected = pd.DataFrame([[344, 'A0A0A0', 3000], [344, 'A0A0A0', -2000], [484, 'A0A0A0', 1000],
[494, 'A0A0A0', 1000], [700, 'A0A0A0', 1000], [900, 'A0A0A0', 1000]],
columns=['Store_Num', 'Postal_Code', 'Sales'])

result = clean_postal_codes(test_data)
print(expected) # Is not None
print(result) # Is also not None
assert testing.assert_frame_equal(expected, result) # Getting None

我不断收到以下错误 "PytestAssertRewriteWarning: asserting the value None, please use "assert is None" 。如果你运行并打印出预期和结果数据帧,你可以看到两个数据帧都存在并且是相同的。尽管如此,错误仍然存​​在.

最佳答案

我相信这个错误的发生是因为函数pandas.testing.assert_frame_equal返回 None如果帧数相等;如果它们不相等,则会引发 AssertionError .因此,您实际上是在检查 assert None .

所以我认为你应该删除 assert运营商在这里,只需写

testing.assert_frame_equal(expected, result)

或者写
assert testing.assert_frame_equal(expected, result) is None

关于python-3.x - 使用 Pytest 进行单元测试时断言值 None 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57498709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com