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

pytest-ordering:指定pytest的case运行顺序的插件

可以看到 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
  1. 通过指定序号指定,比如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
  1. 通过指定函数名指定,比如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插件的三种写法,如果有任何疑问和建议可以留言~

传送门:2021最新测试资料与大厂招聘合集

博主:测试生财(一个不为996而996的测开码农)
座右铭:专注测试开发与自动化运维,努力读书思考写作,为内卷的人生奠定财务自由。
内容范畴:技术提升,职场杂谈,事业发展,阅读写作,投资理财,健康人生。
csdn:https://blog.csdn.net/ccgshigao
博客园:https://www.cnblogs.com/qa-freeroad/
51cto:https://blog.51cto.com/14900374
微信公众号: 测试生财(定期分享独家内容和资源)

pytest-ordering:指定pytest的case运行顺序的插件

Original: https://blog.csdn.net/ccgshigao/article/details/112915866
Author: 公众号-测试生财
Title: pytest-ordering:指定pytest的case运行顺序的插件

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/774257/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球