题目链接单元测试专项练习(Java+Python) - 第四题单元测试题目(Python) - 蓝桥云课 (lanqiao.cn)
解题思路:
1.题目要求:使用基本路径法+简单循环覆盖法
2.看代码,画流程图
循环的流程图不太准确,但意思是这个意思,我不知道怎么画比较好,如果有更好建议可以提
3.确定测试用例
基本路径法:
1.购物车不存在是,创建购物车并将物品添加进去
2.购物车存在,新商品添加进购物车
3.购物车存在,商品已在购物车中,购物车中商品数量+1
简单循环法:
循环次数 | 0 次 | 1 次 | 2 次 | m 次 | n-1 次 | n 次 | n+1 次 |
---|---|---|---|---|---|---|---|
测试用例( num 的值) | 新商品加入空购物车 | 该商品位于购物车第一个 | 该商品位于购物车第二个 | 该商品位于购物车第3~9个 | 该商品位于购物车第8个 | 该商品位于购物车第9个 | 购物车有9个物品,新添加的购物车中已有9个物品 |
分析完毕,整合一下,循环次数0次、n+1次和循环1~n次里这种情况可以覆盖到基本路径法中的2、3。所以我们一共要写的测试用例是8条,根据代码,对应关系如下:(注意数量+2,因为代码里g1~g10的数量都是2)
测试编号 | 输入 | 预期输出 | 备注 |
---|---|---|---|
test_goods_service_01 | goods_list1 g1 | 购物车非空 | 购物车不存在是,创建购物车并将物品添加进去 |
test_goods_service_02 | goods_list2 g1 | 添加新商品 | 循环0次;购物车存在,新商品添加进购物车 |
test_goods_service_03 | goods_list3 g1 | g1商品数量+2 | 循环1次;购物车存在,商品已在购物车中,购物车中商品数量+1 |
test_goods_service_04 | goods_list3 g2 | g2商品数量+2 | 循环2次 |
test_goods_service_05 | goods_list3 g5 | g5商品数量+2 | 循环m(5)次 |
test_goods_service_06 | goods_list3 g8 | g8商品数量+2 | 循环n-1(8)次 |
test_goods_service_07 | goods_list3 g9 | g9商品数量+2 | 循环n(9)次 |
test_goods_service_08 | goods_list3 g10 | 购物车新增商品g10 | 循环n+1(10)次 |
((
))
4.代码(有更好的一起评论或者私信讨论呀!)
代码写法:(没有突出数量检验,还需优化,本人python水平有限,有大佬可以指点指点Please)
import unittest
from datas import Datas
from goods_service import GoodsService
# 单元测试
# 1. 请使用简单循环覆盖法对被测源代码 Goods 和 GoodsService 类中的 shopping_cart 方法设计单元测试用例。
# 2. 请在下方 GoodsServiceTest 类中填写单元测试代码内容。
# 3. 请使用 Datas 类中提供的集合列表和商品对象的数据进行测试。
class GoodsServiceTest(unittest.TestCase):
def test_shopping_cart_01(self):
# TODO 请填写单元测试代码
# 新增商品在购物车列表中不存在的情况
self.assertEqual(Datas.goods_list3, GoodsService.shopping_cart(Datas.goods_list3,Datas.g10))
def test_shopping_cart_02(self):
# 循环0次
self.assertEqual(Datas.goods_list2, GoodsService.shopping_cart(Datas.goods_list2,Datas.g1))
def test_shopping_cart_03(self):
# 循环1次
self.assertEqual(Datas.goods_list3, GoodsService.shopping_cart(Datas.goods_list3,Datas.g1))
def test_shopping_cart_04(self):
# 循环2次
self.assertEqual(Datas.goods_list3, GoodsService.shopping_cart(Datas.goods_list3,Datas.g2))
def test_shopping_cart_05(self):
# 循环m次
self.assertEqual(Datas.goods_list3, GoodsService.shopping_cart(Datas.goods_list3,Datas.g5))
def test_shopping_cart_06(self):
# 循环n-1次
self.assertEqual(Datas.goods_list3, GoodsService.shopping_cart(Datas.goods_list3,Datas.g8))
def test_shopping_cart_07(self):
# 循环n次
self.assertEqual(Datas.goods_list3, GoodsService.shopping_cart(Datas.goods_list3,Datas.g9))
def test_shopping_cart_08(self):
# 购物车不存在
self.assertIsNotNone(GoodsService.shopping_cart(Datas.goods_list1,Datas.g1))
if __name__ == '__main__':
unittest.main()
优化代码写法2:可以验证购物车中数量+2,确认购物车中新增商品
import unittest
from datas import Datas
from goods_service import GoodsService
# 单元测试
# 1. 请使用简单循环覆盖法对被测源代码 Goods 和 GoodsService 类中的 shopping_cart 方法设计单元测试用例。
# 2. 请在下方 GoodsServiceTest 类中填写单元测试代码内容。
# 3. 请使用 Datas 类中提供的集合列表和商品对象的数据进行测试。
class GoodsServiceTest(unittest.TestCase):
def test_shopping_cart_01(self):
# 循环n+1,新增商品在购物车列表中不存在的情况
self.assertEqual(Datas.g10, GoodsService.shopping_cart(Datas.goods_list3,Datas.g10)[9])
def test_shopping_cart_02(self):
# 循环0次,新增商品在购物车列表中不存在的情况
self.assertEqual(Datas.g1, GoodsService.shopping_cart(Datas.goods_list2,Datas.g1)[0])
def test_shopping_cart_03(self):
# 循环1次
self.assertEqual(4, GoodsService.shopping_cart(Datas.goods_list3,Datas.g1)[0].quantity)
def test_shopping_cart_04(self):
# 循环2次
self.assertEqual(4, GoodsService.shopping_cart(Datas.goods_list3,Datas.g2)[1].quantity)
def test_shopping_cart_05(self):
# 循环m次
self.assertEqual(4, GoodsService.shopping_cart(Datas.goods_list3,Datas.g5)[4].quantity)
def test_shopping_cart_06(self):
# 循环n-1次
self.assertEqual(4, GoodsService.shopping_cart(Datas.goods_list3,Datas.g8)[7].quantity)
def test_shopping_cart_07(self):
# 循环n次
self.assertEqual(4, GoodsService.shopping_cart(Datas.goods_list3,Datas.g9)[8].quantity)
def test_shopping_cart_08(self):
# 购物车不存在
self.assertIsNotNone(GoodsService.shopping_cart(Datas.goods_list1,Datas.g1))
self.assertEqual(Datas.g1, GoodsService.shopping_cart(Datas.goods_list2,Datas.g1)[0])
if __name__ == '__main__':
unittest.main()
5.总结
如果对你有帮助,给个赞吧,给修改意见更好,感谢感谢!