pytest框架简单介绍
Posted 永远不要矫情
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytest框架简单介绍相关的知识,希望对你有一定的参考价值。
pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:
- 简单灵活,容易上手,文档丰富;
- 支持参数化,可以细粒度地控制要测试的测试用例;
- 能够支持简单的单元测试和复杂的功能测试,还可以用selenium/appnium等自动化测试、接口自动化测试(pytest+requests)
- 具有很多第三方插件,并且可以自定义扩展,比如pytest-selenium,pytest-html等
- 测试用例的skip和xfail处理
- 可以很好的和CLI工具结合,例如Jenkins
1.pytest安装
安装命令如下:
pip install pytest
使用pip list命令能看到pytest即可
2.编写规则
编写规则有如下几点:
- 测试文件以test_开头,或者以_test结尾也行
- 测试类以Test开头,并且不能带init方法
- 测试函数以test_开头
- 断言使用基本的assert即可
例如:
import pytest
class Testcase():
def test_01(self):
print('test01')
if __name__ == '__main__':
pytest.main(['test_01.py'])
输出为:
若将类名称改为testcase,则结果如下:
3.console参数
在上面的例子里,test_01方法里会打印test01,但实际上并没有,这就需要在执行的时候加参数。参数如下所示:
参数 | 含义 |
---|---|
-v | 用于显示每个测试函数的执行结果 |
-q | 用于显示每个测试函数的执行结果 |
-s | 用于显示测试函数中print()函数的输出 |
-x | –exitfirst,在第一个错误或测试失效时立即退出 |
-h | 帮助 |
例如:我们将代码改一下,便于看参数的效果:
import pytest
class Testcase():
def test_f(self):
print('hello')
if __name__ == '__main__':
pytest.main(['-v','test_01.py'])
使用-v输出如下:
collecting ... collected 1 item
test_01.py::Testcase::test_f PASSED [100%]
============================== 1 passed in 0.02s ==============================
使用-s输出如下:
rootdir: D:\\pythonProject\\my_selenium_project\\testcases\\pytest
collected 1 item
test_01.py hello
.
============================== 1 passed in 0.02s ==============================
使用-s和-v,输出如下:
collecting ... collected 1 item
test_01.py::Testcase::test_f hello
PASSED
============================== 1 passed in 0.02s ==============================
4.执行测试
4.1.main方法
在上一节使用过的,格式为:
pytest.main(['module_name'])
4.2 命令行
可在pycharm的命令行执行,格式如下:
pytest -s -v test_01.py
例如:
D:\\pythonProject\\my_selenium_project\\testcases\\pytest>pytest test_01.py
======================================================================== test session starts ========================================================================
platform win32 -- Python 3.7.6, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
rootdir: D:\\pythonProject\\my_selenium_project\\testcases\\pytest
collected 1 item
test_01.py . [100%]
========================================================================= 1 passed in 0.02s =========================================================================
4.3 配置PyCharm执行
方法为:setting->Tools->Python Integrated tools->Default test runner,将默认的unittest改为pytest即可。
设置了之后,点击方法或者类名旁边的执行按钮即可。
以上是关于pytest框架简单介绍的主要内容,如果未能解决你的问题,请参考以下文章