今天小编给大家分享一下Python的pytest测试框架怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
pytest 可谓是 Python 测试框架中的元老了,十分完善成熟,其主要有以下 6 个特点:
简单灵活,容易上手,文档丰富;
支持参数化,可以细粒度地控制要测试的测试用例;
能够支持简单的单元测试和复杂的功能测试,还可以用来做 selenium / appnium 等自动化测试、接口自动化测试(pytest+requests);
pytest 具有很多第三方插件,并且可以自定义扩展,比较好用的如 pytest-selenium(集成 selenium )、pytest-html(完美html 测试报告生成)、pytest-rerunfailures(失败 case 重复执行)、pytest-xdist(多 CPU 分发)等;
测试用例的 skip 和 xfail 处理;
可以很好的和 CI 工具结合,例如 jenkins
安装:
pip install pytest
简单使用:
新建一个test_sample.py文件,输入以下代码:
def input_number(i):
return i + 1
def test_answer():
assert inc(2) == 3
在 test_sample.py 文件中,点击执行 pytest 命令,pytest 将运行当前目录及其子目录下所有名称为“test_.py” 或 “_test.py”的文件。
上述代码中我们使用了 assert 语句来验证测试期望值,pytest 中有一种断言反思机制,能智能地报告 assert 表达式的中间值,这个测试返回了一个失败报告,因为 input_number(2) 没有返回 4 。
pytest 配置文件可以改变 pytest 的运行方式,它是一个固定的文件 pytest.ini 文件,读取配置信息,按指定的方式去运行。
[pytest]
# 添加命令行参数
addopts = -s
# 文件搜索路径
testpaths = ./scripts
# 文件名称
python_files = test_*.py
# 类名称
python_classes = Test*
# 方法名称
python_functions = test_*
addopts
addopts 参数可以更改默认命令行选项,这个当我们在 cmd 输入指令去执行用例的时候,会用到,比如我想测试完生成报告,指令比较长
pytest -s —html=report.html
每次输入这么多,不太好记住,于是可以加到 pytest.ini 里
在配置文件中修改 addopts = -s —html = report.html
这样我下次打开 cmd,直接输入 pytest,它就能默认带上这些参数了
testpaths
默认的情况下,pytest将会进入到当前目录下的目录和文件中,去收集测试用例(test_开头的函数)。但是很多时候我们只想搜索固定的某一个文件夹,比如项目目录下的scripts文件夹。这样的话,我们可以通过配置文件来是想这个功能。
testpaths = ./scripts
python_files
pytest 默认会找 test 开头的 py 文件,如果我们想指定某个文件或者指定某些有规律的文件名可以使用这个参数来进行修改
python_files = test_*.py
python_classes
pytest 默认会找 Test 开头的类,如果我们想指定某个类或者指定某些有规律的类名可以使用这个参数来进行修改
python_classes = Test*
python_functions
pytest 默认会找 test 开头的函数,如果我们想指定某个函数或者指定某些有规律的函数名可以使用这个参数来进行修改
python_functions = test_*
断言是一种除错机制,用于验证代码是否符合编码人员的预期。编码人员在开发期间应该对函数的参数、代码中间执行结果合理地使用断言机制,确保程序的缺陷尽量在测试阶段被发现。
简单地讲,断言就是对某种假设条件进行检查。
assert 预期结果 == 实际结果
def test_cut(self):
a = 5
b = 5
cut_num = a - b
assert 10 == cut_num
assert 后面的 10 是一个期望的值,cut_num 是实际得出的值,pytest 框架会自行判断二者的关系是否等价(==),当条件成立时,则断言成功,脚本通过。条件不成立时,则断言失败,脚本不通过。
以上就是“Python的pytest测试框架怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。