一:基础
安装pip install pytestpip show pytestpytest --versionpytest --help
1.1简单测试
test_func.py(注意一定要以test开始)def add(x,y): return x + ydef test1(): assert 2 == add(1,1)def test2(): assert 1 != add(1,1)
然后在终端中进入相应的文件目录
pytest -vv test_func.py (-vv表示详细)
如果没有加后缀
pytest
则所有的以test开头的文件都要被执行。
1.2 计算测试时间
计算显示每个测试执行的时间
pytest --durations=0 -vv test_func.py #duration 周期,表示我想测试0秒以上的所有的方法
1.3 测试异常(例外)的发生
import pytestdef func(x): if x == 0: raise ValueError("value error") else: passdef test_mytest1(): with pytest.raises(ValueError): func(0)def test_mytest2(): assert func(1) == None
1.4 不同参数传递测试
为同一个函数传递不同参数进行测试
def add(x,y): return x + yimport pytest@pytest.mark.parametrize( "x,y,expected", [ (1,1,2), (2,2,4), (10,10,20), ])def test_add(x,y,expected): assert add(x,y) == expected
1.5 分组测试
将测试方法分为不同的测试组,测试时可以单独测试某个组的方法。
在终端输入pytest --markers可以查看当前的分组情况,默认有1、@pytest.mark.filterwarnings(warning)2、@pytest.mark.skip(reason=None)3、@pytest.mark.skipif(condition)4、@pytest.mark.xfail(condition, reason=None, run=True, raises=None, strict=False)5、@pytest.mark.parametrize(argnames, argvalues)6、@pytest.mark.usefixtures(fixturename1, fixturename2, ...)7、@pytest.mark.tryfirst8、@pytest.mark.trylast
然后在文件夹下创建一个 pytest.ini 文件,在里面添加自己的业务分组。以下为 pytest.ini 的内容
[pytest]markers = g1:描述1. g2:描述2.
在保存文件后,再次在终端输入 pytest --markers (编码问题可以用英文)
import pytest@pytest.mark.g1def test_func1(): pass@pytest.mark.g2def test_func2(): pass@pytest.mark.g1def test_func3(): pass@pytest.mark.g2def test_func4(): pass
想要执行某个分组的时候
pytest -vv -m g1pytest -vv -m g2