• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Python测试框架pytest16运行上次失败用例、查看和清除缓存cache、自定义标记mark

武飞扬头像
wangmcn
帮助1

目录

1、运行上次失败用例

2、查看与清除缓存cache 

2.1、--cache-show

2.2、--cache-clear 

3、自定义标记mark 


1、运行上次失败用例

执行全部用例,第一次部分用例执行失败,此时当被测系统修复后,可执行上次失败的用例。

命令行输入 pytest -h

可以查询到两个命令行参数:--lf 和 --ff

参数:

  • --lf, --last-failed 只重新运行上次运行失败的用例(或如果没有失败的话会全部跑)。

  • --ff, --failed-first 运行所有测试,但首先运行上次运行失败的测试(这可能会重新测试,从而导致重复的fixture setup/teardown)。

学新通

创建test_lf_ff.py文件

脚本代码:

  1.  
    #!/usr/bin/env python
  2.  
    # -*- coding: utf-8 -*-
  3.  
    """
  4.  
    微信公众号:AllTests软件测试
  5.  
    """
  6.  
     
  7.  
    import pytest
  8.  
     
  9.  
    @pytest.fixture()
  10.  
    def open():
  11.  
    name = "AllTests软件测试"
  12.  
    return name
  13.  
     
  14.  
    def test_case1(open):
  15.  
    assert open == "AllTests软件测试"
  16.  
     
  17.  
    def test_case2(open):
  18.  
    assert open == "AllTests"
  19.  
     
  20.  
    def test_case3(open2):
  21.  
    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条测试用例

脚本代码:

  1.  
    #!/usr/bin/env python
  2.  
    # -*- coding: utf-8 -*-
  3.  
    """
  4.  
    微信公众号:AllTests软件测试
  5.  
    """
  6.  
     
  7.  
    def test_case1():
  8.  
    assert 0 == 0
  9.  
     
  10.  
    def test_case2():
  11.  
    assert 0 == 1
  12.  
     
  13.  
    def test_case3():
  14.  
    assert 0 == 0
  15.  
     
  16.  
    def test_case4():
  17.  
    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文件

脚本代码:

  1.  
    #!/usr/bin/env python
  2.  
    # -*- coding: utf-8 -*-
  3.  
    """
  4.  
    微信公众号:AllTests软件测试
  5.  
    """
  6.  
    def test_case5():
  7.  
    assert 0 == 0
  8.  
     
  9.  
    def test_case6():
  10.  
    assert 0 == 1
  11.  
     
  12.  
    def test_case7():
  13.  
    assert 0 == 0
  14.  
     
  15.  
    def test_case8():
  16.  
    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文件

脚本代码:

  1.  
    #!/usr/bin/env python
  2.  
    # -*- coding: utf-8 -*-
  3.  
    """
  4.  
    微信公众号:AllTests软件测试
  5.  
    """
  6.  
     
  7.  
    import pytest
  8.  
     
  9.  
    @pytest.mark.case1
  10.  
    def test_case1():
  11.  
    print("====执行 test_case1====")
  12.  
     
  13.  
    @pytest.mark.case2
  14.  
    def test_case2():
  15.  
    print("====执行 test_case2====")
  16.  
     
  17.  
    @pytest.mark.case2
  18.  
    def test_case3():
  19.  
    print("====执行 test_case3====")
  20.  
     
  21.  
    @pytest.mark.case3
  22.  
    class TestClass:
  23.  
    def test_method(self):
  24.  
    print("====执行 test_method====")
  25.  
     
  26.  
    def test_noMark():
  27.  
    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需要和运行的测试用例同一个目录,或在根目录下作用于全局)。

例如:

学新通

文件内容:

  1.  
    [pytest]
  2.  
    markers =
  3.  
    case1: 执行case1的测试用例
  4.  
    case2: 执行case2的测试用例
  5.  
    case3: 执行case3的测试用例

2、打开命令行,输入执行命令:

pytest -s -m "case2 or case1" test_mark.py

运行结果:

warnings信息不显示了。

学新通

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhhkbfic
系列文章
更多 icon
同类精品
更多 icon
继续加载