题目链接单元测试专项练习(Java+Python) - 第四题单元测试题目(Python) - 蓝桥云课 (lanqiao.cn)
解题思路:
1.题目要求:使用基本路径法+简单循环覆盖法
2.看代码,画流程图
循环的流程图不太准确,但意思是这个意思,我不知道怎么画比较好,如果有更好建议可以提
3.确定测试用例
基本路径法:
1.购物车不存在是,创建购物车并将物品添加进去
2.购物车存在,新商品添加进购物车
3.购物车存在,商品已在购物车中,购物车中商品数量+1
简单循环法:
循环次数0 次1 次2 次m 次n-1 次n 次n+1 次测试用例( num 的值)新商品加入空购物车该商品位于购物车第一个该商品位于购物车第二个该商品位于购物车第39个该商品位于购物车第8个该商品位于购物车第9个购物车有9个物品,新添加的购物车中已有9个物品n次里这种情况可以覆盖到基本路径法中的2、3。所以我们一共要写的测试用例是8条,根据代码,对应关系如下:(注意数量+2,因为代码里g1~g10的数量都是2)
分析完毕,整合一下,循环次数0次、n+1次和循环1
测试编号输入预期输出备注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次;购物车存在,商品已在购物车中,购物车中商品数量+1test_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.总结
如果对你有帮助,给个赞吧,给修改意见更好,感谢感谢!
版权归原作者 成为一个很棒的程序员 所有, 如有侵权,请联系我们删除。