在自动化测试中,自动化测试用例设计原则就是:执行过程时不能存在依赖顺序。那么如果测试用例需要按照指定顺序执行,这个时候应该怎么做呢?
目前单元测试框架中UnitTest没有办法改变测试用例的执行顺序,但是另一个单元测试框架Pytest可以做到,辅助测试人员更改测试用例的执行顺序。
今天小编简单的介绍几种方法,教你如何通过Pytest进行更改自动化测试用例的执行顺序。
pytest
Pytest的执行顺序想必大家都清楚,是通过ascii码进行收集的,然后通过文件中从上往下的执行顺序进行运行,我们只需要将我们的测试用例在编写时,按照从上往下的顺序进行编写。
# coding:utf-8
import pytest
def test_a():
print('测试用例01')
def test_b():
print('测试用例02')
def test_c():
print('测试用例03')
通过运行后发现,顺序是按照从上往下的顺序依次执行。
pytest-ordering
pytest-ordering属于Pytest的一个插件,其目的就是帮助我们控制自动化测试用例的执行顺序,而且使用起来也比较简单。
安装:pip install pytest-ordering
使用方法
使用方法比较简单,我们只需要在编写好的测试用例前加上一个装饰器,然后通过改变装饰器传入的参数进行控制其用例执行的顺序。
小编这里拿到上方的用例,我们将从下往上的执行。
# coding:utf-8
import pytest
@pytest.mark.run(order=3)
def test_a():
print('测试用例01')
@pytest.mark.run(order=2)
def test_b():
print('测试用例02')
@pytest.mark.run(order=1)
def test_c():
print('测试用例03')
通过执行测试用例会很清楚的看到,我们已经将测试用例的执行顺序改变了。
pytest_collection_modifyitems
pytest_collection_modifyitems属于Pytest的钩子函数,这个函数可以收集我们的测试用例,收集完成后可以对其进行一些修改和排序功能,下面小编简单的介绍该使用方法。
使用方法
首先需要将pytest_collection_modifyitems这个函数放入到conftest.py文件中,然后对其进行二次开发,这里小编通过倒叙的形似修改了收集到的测试用例,从而改变测试用例的执行顺序。
# conftest.py
# coding:utf-8
def pytest_collection_modifyitems(session, items):
print("收集到的测试用例:%s"%items)
# 修改执行顺序
items.reverse()
for i in items:
print('收集到测试用例名称:%s' %i.name)
编写3个简答的测试用例,通过命令行的方式进行运行,并且会发现也将我们的测试用例顺序改变和收集到了我们的测试用例相关信息。
# coding:utf-8
import pytest
def test_a():
print('测试用例01')
def test_b():
print('测试用例02')
def test_c():
print('测试用例03')
总结
小编通过简单的案例介绍了如何在Pytest中改变测试用例的执行顺序。
当然上述方法并不是唯一的方法,只是提供一个简单的思路,小编还是希望大家编写测试用例时注意不要互相依赖,这样的话执行顺序就可以随机执行,保证我们的测试用例不受其他用例的干扰而成功执行。
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。