一、安装
pytest不是python默认的package,需要自动手工安装。
pytest支持python 2.6--3.5之间的版本,同时可以在unix及windows上安装
安装方式:
pip install pytests
安装完成后,可以查看版本:
pytest --version This is pytest version 3.1.2, imported from c:python27libsite-packagespytest.pyc
二、最简单实例
根据pytest官方文档得来
def func(x): return x + 1 def test_answer(): assert func(3) == 5
运行测试后结果如下:
从上图看来,pytest的结果相比美观点,还有颜色来区分,这个是一两点
三、pytest 帮助
pytest带有很多参数,可能使用pytest --help来查看
pytest --help
下面列举几个常见的参数:
1、-k EXPRESSION
执行某个关键字的用例
用例要匹配给出的表达式;使用python的语法,匹配的范围是文件名、类名、函数名为变量,用and来区分
如下面一段测试用例
class TestClass(object): def test_zne(self): x = "this" assert 'h' in x def test_two(self): x = "hello" assert hasattr(x, 'check') def test_a(self): assert 1==2
运行pytest时带-k参数
pytest -k "pytest and TestClass and not test_a" pytest_lean1.py
结果如下
可以看出,test_a这个用例被取消选择了,没有运行了
2、-x, --exitfirst
当遇到错误时停止测试
下面实例
def func(x): return x+1 def test_answer(): assert func(3) ==5 def test_bb() pass
运行时带如下参数;
pytest -x pytest_lean1.py
结果如下
3、--maxfail=num
当错误个数到达给定数时,退出测试,这里就不列举实例了,结果与-x类似
4、-m MARKEXPR
只能运行有相应标识的测试用例,使用这个参数,测试用例要使用@pytest.mark.marker修饰
如下实例
class TestClass(object): def test_zne(self): '''new_etests''' x = "this" assert 'h' in x @pytest.mark.slow def test_two(self): '''new_sssetests''' x = "hello" assert hasattr(x, 'check') def test_a(self): assert 1==2
teste_two使用了@pytest.mark.slow来修饰
在使用时,使用如下参数
pytest –m slow pytest_lean.py
结果如下
从上图中可以看出,只运行了一个我们带有标识的用例。
注意,-m后面不能带''号(单引号),只能带“”(双引号),不然识别不到
如果要运行多个标识的话,用表达式,如下
pytest -m "slow or faster" 运行有slow标识或 faster标识用例 pytest -m "slow and faster" 运行有slow和faster标识的用例 pytest -m "slow and not faster" 运行有slow和没有faster标识的用例
5、--pdb
当出现错误时,进入调试
但在实例项目中,我们一般不用这个参数,更多的是用python自有的pdb来调试,
如下
import pdb .... pdb.set_trace() ....
6、 -v, --verbose
详细结果
7、-q, --quiet
极简结果显示
8、--junit-xml=path
输出xml文件格式,在与jenkins做集成时使用
9、 --result-log=path
将最后的结果保存到本地文件中