python 单元测试 pytest 学习。
我之前没用过测试,今天需要就学习了一下。
首先安装pytest
pip install pytest
文件名是 bag_adt.py
1 # -*- coding:utf-8 -*- 2 class Bag(object): 3 def __init__(self, maxsize = 10): 4 self.maxsize = maxsize 5 self._items = list() # 容器是 list 6 7 def add(self, item): 8 if len(self) > self.maxsize: 9 raise Exception ("Bag is full") 10 self._items.append(item) 11 12 13 14 def remove(self, item): 15 self._items.remove(item) 16 17 18 19 def __len__(self): 20 return len(self._items) # 返回数据长度 21 22 23 def __iter__(self): 24 for item in self._items: 25 yield item # 这是一个生成器, 每次生成一个值,在内部调用next 26 27 28 def test_bag(): 29 bag = Bag() 30 31 bag.add(1) 32 bag.add(2) 33 bag.add(3) 34 35 assert len(bag) == 3 36 37 bag.remove(3) 38 assert len(bag) == 2 39 40 for i in bag: 41 print(i) 42 43 test_bag()
在 pytest 中案例的最小单位是函数/类,只要按照一定的命名规范即可:
测试文件以test_开头(以_test结尾也可以)
测试类以Test开头,并且不能带有 __init__ 方法
测试函数以test_开头
35 行用的是断言
相等关系:assert 1 == 1 还有:>=,<=,!=,<,>
包含关系:assert h in hell 还有:not in
布尔值: assert 函数(参数) 比如:assert 素数(判断是否素数的参数)
然后在终端输入 pytest bag_adt.py