美文网首页python进阶课
pytest常用命令行选项

pytest常用命令行选项

作者: test小星星 | 来源:发表于2019-07-24 21:41 被阅读98次

    pytest有丰富的命令行选项,以满足不同的需要,使用pytest --help可以查看全部选项


    常用选项

    1. --collect-only 选项
      使用--collect-only选项可以展示在给定配置下哪些用例被运行。方便检查用例是否符合预期。

      --collect -only
      不加参数的执行结果
      不加参数的执行结果
    2. -v选项
      使用-v/--verbose选项,输出的信息会更详细。

      -v选项
    3. -k 选项
      -k 选项允许你使用表达式指定希望执行的测试用例。假设希望执行test_aaa()和test_bbb()这两个测试用例,那么可以用表达式"aaa or bbb"来筛选。结合-v查看是否符合预期,如下:

    # 测试用例
    def test_aaa():
        print('测试用例1')
        assert 1 == 1
    
    def test_bbb():
        print('测试用例2')
        assert 2 == 2
    
    def test_ccc():
        print('测试用例3')
        assert 3 == 3
    
    def test_ddd():
        print('测试用例4')
        assert 4 == 4
    
    -k选项

    说明:只要符合名称的测试文件或者测试函数都会被执行。

    1. -m 选项
      标记(marker)用于标记测试并分组,以便快速选中并运行,如下
    # 测试用例
    @pytest.mark.a  # 标记a
    def test_1(fixture_func):
        print('测试用例1')
        assert 1==1
    
    @pytest.mark.b  # 标记b
    def test_2(fixture_func):
        print('测试用例2')
        assert 2 == 2
    
    # 如果希望同时运行它们,那么可以预先做好标记。
    # 这里使用什么标记名由你自己决定。
    

    执行结果


    -m选项
    1. -x 选项
      -x选项,设置如果测试用例遇到失败时立即停止整个会话。
    # 测试用例
    
    def test_1():
        print('测试用例1')
        assert 1==2
    
    
    def test_2():
        print('测试用例2')
        assert 2 == 2
    

    不加-x执行结果


    不加-x执行结果

    加上-x结果


    image.png
    1. --maxfail=num选项
      -x选项的特点是, 一旦遇到测试失败,就会全局停止。如果你希望pytest失败几次后再停止,则可以使用--maxfail选项,明确指定要以失败几次。 如设置--maxfail=2,则需要遇到两次错误才会停止,这样前面只存在一个失败测试的就会全都被执行。如下图:

    一个失败测试用例

    
    def test_1():
        print('测试用例1')
        assert 1==2
    
    def test_2():
        print('测试用例2')
        assert 2 == 2
    
    def test_3():
        print('测试用例3')
        assert 3 == 3
    

    --maxfail=2 执行结果


    --maxfail=2执行结果

    可以看出--maxfail=2 时有一个失败的测试用例也会全部执行完成。
    修改测试用例,改成失败2次

    def test_1():
        print('测试用例1')
        assert 1==2
    
    def test_2():
        print('测试用例2')
        assert 2 == 3
    
    def test_3():
        print('测试用例3')
        assert 3 == 3
    

    执行结果


    --maxfail=2执行结果2

    由于失败用例等于2次所以后面的测试用例就不会执行了。

    相关文章

      网友评论

        本文标题:pytest常用命令行选项

        本文链接:https://www.haomeiwen.com/subject/rjofrctx.html