在进行模糊搜索时,得到文本列表之后,直接断言
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)
最后得到测试通过