在自动化测试中,自动化测试用例设计原则就是:执行过程时不能存在依赖顺序。那么如果测试用例需要按照指定顺序执行,这个时候应该怎么做呢?
目前单元测试框架中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中改变测试用例的执行顺序。
当然上述方法并不是唯一的方法,只是提供一个简单的思路,小编还是希望大家编写测试用例时注意不要互相依赖,这样的话执行顺序就可以随机执行,保证我们的测试用例不受其他用例的干扰而成功执行。
感谢您的阅读,希望本篇文章对您有所帮助。
感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取