测试开发问题---模糊问题的解决

文章讨论了在Python中进行模糊搜索后,对结果进行断言时遇到的错误。问题在于搜索结果列表包含多个元素,而断言直接比较的是单一商品名称。解决方案是使用`any()`函数检查商品名称是否存在于结果列表的任何元素中,从而成功通过断言测试。
摘要由CSDN通过智能技术生成

在进行模糊搜索时,得到文本列表之后,直接断言

assert goods_name in goods_name_text_list

 会报错,因为得到的文本列表不止输入的东西,错误显示在搜索框中的内容不等于得到的文本列表,如何修改,见下面

首先

#判断修改名称是否存在,使用 Python 的字符串方法 startswith() 和 endswith(),它们可以用于判断一个字符串是否以某个子串开头或者结束。
# result = [s for s in goods_name_text_list if s.startswith(self.PREFIX_NUM)]报错,#self.PREFIX_NUM 变量的值是一个整数类型,而 startswith() 方法的参数应该是一个字符串类型。
result = [s for s in goods_name_text_list if s.startswith(str(self.PREFIX_NUM))]

进行断言时出现以下错误

> assert goods_name in result E AssertionError: assert '20202198' in ['20202198_1686385618_商品名称添加', '20202198_1686382396_商品名称添加', '20202198_1686382047_商品名称添加', '20202198_1686364630_商品名称添加', '20202198_1686364061_商品名称添加', '20202198_1686363669_商品名称添加', ...] test_litemall_po.py:88: AssertionError

一种可能的解决方法是检查商品名称的准确性,并确保正确的商品名称被传递给函数,或者检查函数返回的结果列表中是否包含了正确的商品名称。您也可以在断言之前打印日志,以调试断言条件是否正确。

但是这一种方法达不到想要模糊查询的效果,所以有另一种方法

另一个可能的方法是修改断言条件,使其检查特定的商品名称是否包含在结果列表中的任何一个元素中,例如使用任何一个(),如下所示:

assert any(goods_name in name for name in result)

最后得到测试通过

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值