zoukankan      html  css  js  c++  java
  • pytest-ordering:指定pytest的case运行顺序的插件

    背景

    在写接口或功能自动化case的时候,会遇到一些case有先后执行顺序的场景。比如:注册->登陆,先调用注册接口在数据库里面生成用户名和密码,然后使用登陆接口验证登陆。

    在pytest里,如果注册和登陆分别是两个testcase,默认执行执行顺序是从前到后的。

    例子

    有一个pytest的测试case用例:test_login.py

    
    
    #/usr/bin/env python3
    import pytest
    def test_login():
        assert True
    
    def test_reg():
        assert True

    运行:pytest test_login.py

    可以看到test_login在test_reg之前执行,这和我们的期望相悖。

    解决方法:

    1. 可以在编写testcase脚本时候,把test_reg放到test_login前面。

    2.使用pytest-ordering插件

    第一种方式属于硬编码的方式,在后续维护过程中很容易出现维护的混乱性(比如后续有人要新加case和注册登录相关,可能改起来就比较麻烦了)。

    第二种的好处就是可以通过pytest-ordering插件,使用装饰器的方式写清楚这种先后顺序,方便阅读和维护。

    pytest-ordering使用

    安装pytest-ordering

    sudo pip3(pip) install pytest-ordering

    使用pytest-ordering修饰符

    1. 通过指定序数词指定,比如first,second,third...second-to-last(倒数第二), last(最后)。这种含义比较直接(不过容易写错单词)

    #/usr/bin/env python3
    import pytest
    
    @pytest.mark.run('second')
    def test_login():
        assert True
    
    @pytest.mark.run('first')
    def test_reg():
        assert True

    2. 通过指定序号指定,比如1,2,3...-2(倒数第二), -1(最后)。这种写错的几率下,也比较直接。

    #/usr/bin/env python3
    import pytest
    
    @pytest.mark.run(order=2)
    def test_login():
        assert True
    
    @pytest.mark.run(order=1)
    def test_reg():
        assert True

    3. 通过指定函数名指定,比如test_login和test_order都要在test_reg后执行,这种用法就比较适合此类场景。

    #/usr/bin/env python3
    import pytest
    
    @pytest.mark.run(after='test_reg')
    def test_login():
        assert True
    
    def test_reg():
        assert True
    
    @pytest.mark.run(after='test_reg')
    def test_order():
        assert True

    以上就是pytest-ordering插件的三种写法,如果有任何疑问和建议可以留言~

    博主:测试生财

    座右铭:专注测试与自动化,致力提高研发效能;通过测试精进完成原始积累,通过读书理财奔向财务自由。

    csdn:https://blog.csdn.net/ccgshigao

    博客园:https://www.cnblogs.com/qa-freeroad/

    51cto:https://blog.51cto.com/14900374

  • 相关阅读:
    tensorflow2知识总结---3、逻辑回归与交叉熵
    tensorflow2知识总结---2、多层感知器实例
    日常英语---200720(感知器:perceptron)
    日常英语---200720(numpy怎么读)
    日常英语---200720(tensorflow2优化函数:model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['acc']))
    tensorflow2知识总结---1、线性回归实例
    Guid.ToString Method
    Intercept HTTP requests
    Fetch API
    古墓惊魂 关卡奖励的宝藏
  • 原文地址:https://www.cnblogs.com/qa-freeroad/p/14289426.html
Copyright © 2011-2022 走看看