Python测试框架pytest16运行上次失败用例、查看和清除缓存cache、自定义标记mark
目录
1、运行上次失败用例
执行全部用例,第一次部分用例执行失败,此时当被测系统修复后,可执行上次失败的用例。
命令行输入 pytest -h
可以查询到两个命令行参数:--lf 和 --ff
参数:
-
--lf, --last-failed 只重新运行上次运行失败的用例(或如果没有失败的话会全部跑)。
-
--ff, --failed-first 运行所有测试,但首先运行上次运行失败的测试(这可能会重新测试,从而导致重复的fixture setup/teardown)。
创建test_lf_ff.py文件
脚本代码:
-
#!/usr/bin/env python
-
# -*- coding: utf-8 -*-
-
"""
-
微信公众号:AllTests软件测试
-
"""
-
-
import pytest
-
-
-
def open():
-
name = "AllTests软件测试"
-
return name
-
-
def test_case1(open):
-
assert open == "AllTests软件测试"
-
-
def test_case2(open):
-
assert open == "AllTests"
-
-
def test_case3(open2):
-
assert open == "AllTests软件测试"
打开命令行,输入执行脚本命令:
pytest test_lf_ff.py
运行结果:
第一次运行3个测试用例,1个passed、1个failed、1个error。
1、如果只想运行 failed 和 error 用例,使用参数 --lf
在命令行输入:
pytest --lf test_lf_ff.py
运行结果:
2、如果想先运行上次失败的,后运行其它通过的用例,使用参数 --ff
在命令行输入:
pytest --ff test_lf_ff.py
运行结果:
2、查看与清除缓存cache
pytest 执行完测试用例之后会生成一个 .pytest_cache 的缓存文件夹,用于记录上一次失败的用例和用例的 ids 等。
pytest 命令行参数:
-
--cache-show=[CACHESHOW] 显示缓存内容,不执行收集用例或测试用例。可选参数:glob(默认值:"*")。
-
--cache-clear 在测试运行开始时删除所有缓存内容。
创建test_cache.py文件
编写4条测试用例
脚本代码:
-
#!/usr/bin/env python
-
# -*- coding: utf-8 -*-
-
"""
-
微信公众号:AllTests软件测试
-
"""
-
-
def test_case1():
-
assert 0 == 0
-
-
def test_case2():
-
assert 0 == 1
-
-
def test_case3():
-
assert 0 == 0
-
-
def test_case4():
-
assert 0 == 2
命令行输入执行命令:
pytest test_cache.py
运行结果:
2条用例失败,2条用例成功。
运行完成后,项目根目录会生成.pytest_cache的缓存文件夹。
目录结构:
lastfailed文件记录之前运行用例为失败的
可以看到刚执行完的用例,用例2和用例4为失败的用例。
nodeids文件记录之前所有运行用例的节点
2.1、--cache-show
命令行输入执行命令:
pytest --cache-show
运行结果:
显示缓存内容
2.2、--cache-clear
修改test_cache.py文件
脚本代码:
-
#!/usr/bin/env python
-
# -*- coding: utf-8 -*-
-
"""
-
微信公众号:AllTests软件测试
-
"""
-
def test_case5():
-
assert 0 == 0
-
-
def test_case6():
-
assert 0 == 1
-
-
def test_case7():
-
assert 0 == 0
-
-
def test_case8():
-
assert 0 == 2
命令行输入执行命令:
pytest test_cache.py
运行结果:
2条用例失败,2条用例成功。
查看.pytest_cache的缓存文件夹(里面的文件记录是累加的)
lastfailed文件(包含修改test_cache.py文件之前执行的失败用例记录)
nodeids文件(包含修改test_cache.py文件之前执行的用例节点)
使用命令行参数--cache-clear
命令行输入执行命令:
pytest --cache-clear test_cache.py
运行结果:
执行用例之前,清空所有的缓存内容。
再次查看.pytest_cache的缓存文件夹
lastfailed文件,显示最新的用例失败的记录
nodeids文件,显示最新的用例节点
3、自定义标记mark
pytest 可以支持自定义标记,自定义标记可以把一个项目划分多个模块,然后指定模块名称执行。
例如:可以标明哪些用例是在 Windows 下执行的,哪些用例是在 Mac 下执行的,在运行代码时指定 mark 即可。
示例一:
1、创建test_mark.py文件
脚本代码:
-
#!/usr/bin/env python
-
# -*- coding: utf-8 -*-
-
"""
-
微信公众号:AllTests软件测试
-
"""
-
-
import pytest
-
-
-
def test_case1():
-
print("====执行 test_case1====")
-
-
-
def test_case2():
-
print("====执行 test_case2====")
-
-
-
def test_case3():
-
print("====执行 test_case3====")
-
-
-
class TestClass:
-
def test_method(self):
-
print("====执行 test_method====")
-
-
def test_noMark():
-
print("====没有标记测试====")
2、打开命令行,输入执行命令:
pytest -s -m case1 test_mark.py
运行结果:
只执行标记是case1的(函数test_case1)。
示例二:
还是使用test_mark.py文件。
如果不想执行标记是case1,其他的都执行,直接取反即可。
打开命令行,输入执行命令:
pytest -s -m "not case1" test_mark.py
运行结果:
除了标记是case1的(函数test_case1)没有执行,其他的标记都执行了。
示例三:
还是使用test_mark.py文件。
如果想执行多个自定义标记的用例,可以用or
打开命令行,输入执行命令:
pytest -s -m "case2 or case1" test_mark.py
运行结果:
执行自定义标记case1、case2。注意:执行的顺序,不一定在命令前就先执行。
示例四:
如上面几个示例,如何避免执行后有warnings信息。
1、还是使用test_mark.py文件。之后再创建一个pytest.ini文件(注意:pytest.ini需要和运行的测试用例同一个目录,或在根目录下作用于全局)。
例如:
文件内容:
-
[pytest]
-
markers =
-
case1: 执行case1的测试用例
-
case2: 执行case2的测试用例
-
case3: 执行case3的测试用例
2、打开命令行,输入执行命令:
pytest -s -m "case2 or case1" test_mark.py
运行结果:
warnings信息不显示了。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhhkbfic
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22