• pytest-命令行参数


    命令行执行

    目录结构

    .
    ├── __init__,py
    ├── test_001.py
    └── test_002.py
    

    test_001.py

    #!/usr/bin/python3
    #-*- conding:utf-8 -*-
    
    def test_one():
        print('test_one')
    
    def test_two():
        print('test_two')
    
    class Test_Class():
        def test_three(self):
            print('test_three')
    

    test_2.py

    #!/usr/bin/python3
    #-*- conding:utf-8 -*-
    
    def test_1():
        print('test_1')
    

    一、直接执行

    • 执行当前目录下所有的测试用例
    pytest
    
    ================================================== test session starts ===================================================
    platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1
    rootdir: /media/_dde_data/python
    collected 4 items                                                                                                        
    
    test_001.py ...                                                                                                    [ 75%]
    test_002.py .                                                                                                      [100%]
    
    =================================================== 4 passed in 0.02s ====================================================
    
    • 执行指定模块中的所有测试用例
    pytest test_one.py
    
    ================================================== test session starts ===================================================
    platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1
    rootdir: /media/_dde_data/python
    collected 3 items                                                                                                        
    
    test_001.py ...                                                                                                    [100%]
    
    =================================================== 3 passed in 0.02s ====================================================
    
    • 执行指定模块中的指定测试用例

      1. 指定类
      pytest test_001.py::Test_Class
      
      platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1
      rootdir: /media/_dde_data/python
      collected 1 item                                                                                                         
      
      test_001.py .                                                                                                      [100%]
      
      =================================================== 1 passed in 0.01s ====================================================
      
      1. 指定类中的指定方法
      pytest test_001.py::Test_Class::test_three
      
      ================================================== test session starts ===================================================
      platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1
      rootdir: /media/_dde_data/python
      collected 1 item                                                                                                         
      
      test_001.py .                                                                                                      [100%]
      
      =================================================== 1 passed in 0.01s ====================================================
      
      1. 指定函数
      pytest test_001.py::test_two
      
      ================================================== test session starts             ===================================================
      platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1
      rootdir: /media/_dde_data/python
      collected 1 item                                                                                                         
      
      test_001.py .                                                                                                      [100%]
      
      =================================================== 1 passed in 0.01s ====================================================
      

    二、带参数执行

    1、-v

    可以输出用例详细的执行信息,比如用例所在的文件及用例名称

    pytest -v
    
    ================================================== test session starts ===================================================
    platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1 -- /usr/bin/python3
    cachedir: .pytest_cache
    rootdir: /media/_dde_data/python
    collected 4 items                                                                                                        
    
    test_001.py::test_one PASSED                                                                                       [ 25%]
    test_001.py::test_two PASSED                                                                                       [ 50%]
    test_001.py::Test_Class::test_three PASSED                                                                         [ 75%]
    test_002.py::test_1 PASSED                                                                                         [100%]
    
    =================================================== 4 passed in 0.02s ====================================================
    

    2、-s

    可以输出用例中的调试信息,比如print打印信息等

    pytest -s test_002.py
    
    ================================================== test session starts ===================================================
    platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1
    rootdir: /media/_dde_data/python
    collected 1 item                                                                                                         
    
    test_002.py test_1
    .
    
    =================================================== 1 passed in 0.01s ====================================================
    

    3、-k

    执行用例中包含“关键字”的用例

    pytest -vk "three"
    
    ================================================== test session starts ===================================================
    platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1 -- /usr/bin/python3
    cachedir: .pytest_cache
    rootdir: /media/_dde_data/python
    collected 4 items / 3 deselected / 1 selected                                                                            
    
    test_001.py::Test_Class::test_three PASSED                                                                         [100%]
    
    ============================================ 1 passed, 3 deselected in 0.01s =============================================
    

    4、-m

    执行带有特定标记(@pytest.mark.‘标记’)的测试用例
    新增test_003.py

    #!/usr/bin/python3
    #-*- conding:utf-8 -*-
    import pytest
    
    
    def test_01():
        print('test_01')
    
    @pytest.mark.aaa
    def test_02():
        print('test_02')
    
    class Test_Class():
        @pytest.mark.aaa
        def test_03(self):
            print('test_03')
    
    pytest -vm "aaa"
    
    ================================================== test session starts ===================================================
    platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1 -- /usr/bin/python3
    cachedir: .pytest_cache
    rootdir: /media/_dde_data/python
    collected 7 items / 5 deselected / 2 selected                                                                            
    
    test_003.py::test_02 PASSED                                                                                        [ 50%]
    test_003.py::Test_Class::test_03 PASSED                                                                            [100%]
    
    ==================================================== warnings summary ====================================================
    test_003.py:9
      /media/_dde_data/python/test_003.py:9: PytestUnknownMarkWarning: Unknown pytest.mark.aaa - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/latest/mark.html
        @pytest.mark.aaa
    
    test_003.py:14
      /media/_dde_data/python/test_003.py:14: PytestUnknownMarkWarning: Unknown pytest.mark.aaa - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/latest/mark.html
        @pytest.mark.aaa
    
    -- Docs: https://docs.pytest.org/en/latest/warnings.html
    ====================================== 2 passed, 5 deselected, 2 warnings in 0.02s =======================================
    

    5、-x

    遇到错误时停止
    新增test_004.py

    #!/usr/bin/python3
    #-*- conding:utf-8 -*-
    
    def test_a():
        print("test_a")
        assert 1 == 3
    
    
    def test_b():
        print('test_b')
        assert 2 == 4
    
    def test_c():
        print('test_c')
        assert 3 == 3
    
    pytest -x test_004.py
    
    ================================================== test session starts ===================================================
    platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1
    rootdir: /media/_dde_data/python
    collected 3 items                                                                                                        
    
    test_004.py F
    
    ======================================================== FAILURES ========================================================
    _________________________________________________________ test_a _________________________________________________________
    
        def test_a():
            print("test_a")
    >       assert 1 == 3
    E       assert 1 == 3
    
    test_004.py:6: AssertionError
    -------------------------------------------------- Captured stdout call --------------------------------------------------
    test_a
    ================================================ short test summary info =================================================
    FAILED test_004.py::test_a - assert 1 == 3
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    =================================================== 1 failed in 0.17s ====================================================
    

    6、--maxfail

    pytest --maxfail=2 test_004.py
    
    ================================================== test session starts ===================================================
    platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1
    rootdir: /media/_dde_data/python
    collected 3 items                                                                                                        
    
    test_004.py FF
    
    ======================================================== FAILURES ========================================================
    _________________________________________________________ test_a _________________________________________________________
    
        def test_a():
            print("test_a")
    >       assert 1 == 3
    E       assert 1 == 3
    
    test_004.py:6: AssertionError
    -------------------------------------------------- Captured stdout call --------------------------------------------------
    test_a
    _________________________________________________________ test_b _________________________________________________________
    
        def test_b():
            print('test_b')
    >       assert 2 == 4
    E       assert 2 == 4
    
    test_004.py:11: AssertionError
    -------------------------------------------------- Captured stdout call --------------------------------------------------
    test_b
    ================================================ short test summary info =================================================
    FAILED test_004.py::test_a - assert 1 == 3
    FAILED test_004.py::test_b - assert 2 == 4
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 2 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    =================================================== 2 failed in 0.17s ====================================================
    

    7、-q

    简化控制台的输出

    pytest -q test_001.py 
    
    ...                                                                                                                [100%]
    3 passed in 0.01s
    

    8、--collect-only

    罗列出当前目录下所有的测试模块,测试类及测试函数

    pytest --collect-only
    
    ================================================== test session starts ===================================================
    platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1
    rootdir: /media/_dde_data/python
    collected 10 items                                                                                                       
    <Module test_001.py>
      <Function test_one>
      <Function test_two>
      <Class Test_Class>
          <Function test_three>
    <Module test_002.py>
      <Function test_1>
    <Module test_003.py>
      <Function test_01>
      <Function test_02>
      <Class Test_Class>
          <Function test_03>
    <Module test_004.py>
      <Function test_a>
      <Function test_b>
      <Function test_c>
    
    ==================================================== warnings summary ====================================================
    test_003.py:9
      /media/_dde_data/python/test_003.py:9: PytestUnknownMarkWarning: Unknown pytest.mark.aaa - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/latest/mark.html
        @pytest.mark.aaa
    
    test_003.py:14
      /media/_dde_data/python/test_003.py:14: PytestUnknownMarkWarning: Unknown pytest.mark.aaa - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/latest/mark.html
        @pytest.mark.aaa
    
    -- Docs: https://docs.pytest.org/en/latest/warnings.html
    ================================================== 2 warnings in 0.02s ===================================================
    

    9、--lf

    当一次用例执行完成后,如果其中存在失败的测试用例,那么我们可以使用此命令重新运行失败的测试用例

    pytest  test_004.py
    
    ============================================== 2 failed, 1 passed in 0.18s ===============================================
    

    2个失败一个成功

    pytest  --lf
    

    只会重新执行失败的2个用例

    =================================================== 2 failed in 0.19s ====================================================
    

    9、–tb=style

    屏蔽测试用例输出的回溯信息,可以简化失败用例的输出信息。style可以时'auto', 'long', 'short', 'no', 'line', 'native'

    pytest  --tb=short test_004.py 
    
    ================================================== test session starts ===================================================
    platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1
    rootdir: /media/_dde_data/python
    collected 3 items                                                                                                        
    
    test_004.py FF.                                                                                                    [100%]
    
    ======================================================== FAILURES ========================================================
    _________________________________________________________ test_a _________________________________________________________
    test_004.py:6: in test_a
        assert 1 == 3
    E   assert 1 == 3
    -------------------------------------------------- Captured stdout call --------------------------------------------------
    test_a
    _________________________________________________________ test_b _________________________________________________________
    test_004.py:11: in test_b
        assert 2 == 4
    E   assert 2 == 4
    -------------------------------------------------- Captured stdout call --------------------------------------------------
    test_b
    ================================================ short test summary info =================================================
    FAILED test_004.py::test_a - assert 1 == 3
    FAILED test_004.py::test_b - assert 2 == 4
    ============================================== 2 failed, 1 passed in 0.19s ===============================================
    
    pytest  --tb=no test_004.py 
    
    ================================================== test session starts ===================================================
    platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1
    rootdir: /media/_dde_data/python
    collected 3 items                                                                                                        
    
    test_004.py FF.                                                                                                    [100%]
    
    ================================================ short test summary info =================================================
    FAILED test_004.py::test_a - assert 1 == 3
    FAILED test_004.py::test_b - assert 2 == 4
    ============================================== 2 failed, 1 passed in 0.18s ===============================================
    
    pytest  --tb=line test_004.py 
    
    ================================================== test session starts ===================================================
    platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1
    rootdir: /media/_dde_data/python
    collected 3 items                                                                                                        
    
    test_004.py FF.                                                                                                    [100%]
    
    ======================================================== FAILURES ========================================================
    /media/_dde_data/python/test_004.py:6: assert 1 == 3
    /media/_dde_data/python/test_004.py:11: assert 2 == 4
    ================================================ short test summary info =================================================
    FAILED test_004.py::test_a - assert 1 == 3
    FAILED test_004.py::test_b - assert 2 == 4
    ============================================== 2 failed, 1 passed in 0.18s ===============================================
    
  • 相关阅读:
    Codeforces 1294E Obtain a Permutation
    Codeforces 1292C Xenon's Attack on the Gangs
    Codeforces 1292B Aroma's Search
    Codeforces 1288E Messenger Simulator
    Codeforces 1288D Minimax Problem
    Codeforces 1285E Delete a Segment
    P3368 【模板】树状数组 2 题解
    P3374 【模板】树状数组 1 题解
    P1494 [国家集训队]小Z的袜子 题解
    P2260 [清华集训2012]模积和 题解
  • 原文地址:https://www.cnblogs.com/jingxindeyi/p/13063149.html
Copyright © 2020-2023  润新知