首页 > 其他分享 >Pytest收集用例

Pytest收集用例

时间:2023-07-22 18:12:05浏览次数:38  
标签:插件 收集 stdout pytest 用例 coll Pytest collected

有时候我们需要收集一下当前的测试用例,获的所有测试用例的列表,在使用pytest的测试框架里,我们可以使用

pytest <path> --collect-only -q

来仅收集(不运行)用例。但是使用这个命令用例列表只会显示在命令行中,如何在代码中使用并得到这个用例列表呢?
除了使用os.popen()或subprocess从命令行执行,获得并解析命令行输出外,我们还可以使用Pytest的钩子方法pytest_collection_modifyitems,在收集用例时,将用例存起来。
实现方式如下:

import pytest
from io import StringIO
from contextlib import redirect_stdout

class TestCollection:
    def __init__(self):
        self.collected = []

    def pytest_collection_modifyitems(self, items):
        for item in items:
            self.collected.append(item.nodeid)

def get_testcases(testpath):
    coll = TestCollection()

    temp_stdout = StringIO()
    with redirect_stdout(temp_stdout):  # 不显示命令行输出
        pytest.main([testpath, '--collect-only', '-q'], plugins=[coll]) # 指定插件
    return coll.collected

get_testcases('./testcases')

上面我们定义了一个插件TestCollection,插件中包含一个钩子方法,在收集用例时,将用例节点id添加到插件的collected属性中。
使用pytest.main运行时,可以指定使用该插件,然后从插件对象coll中获取结果即可。

标签:插件,收集,stdout,pytest,用例,coll,Pytest,collected
From: https://www.cnblogs.com/superhin/p/pytest-collect-tests.html

相关文章

  • 垃圾收集器
    CMS:https://www.bilibili.com/video/BV1Zb4y1W7qT/?spm_id_from=333.999.0.0&vd_source=46d50b5d646b50dcb2a208d3946b1598G1:https://www.bilibili.com/video/BV16D4y1g7s9/?spm_id_from=333.337.search-card.all.click&vd_source=46d50b5d646b50dcb2a208d3946b159......
  • k8s 日志收集
    日志收集流程filebeat--->kafka--->logstash--->elasticsearchlogstash.confinput{kafka{bootstrap_servers=>"172.16.3.213:19092,172.16.3.213:29092,172.16.3.213:39092"topics=>["app-1"]codec=>"json......
  • alllure 层级测试用例
    importallureimportpytestimportos@allure.epic('微信')#Epic(史诗)是指一个大型的任务@allure.feature('首页')#feature通常包括详细的功能描述、特定的输入和预期的输出@allure.story('登录')#于将测试用例关联到一个指定的用户故事@allure.title('登录页面的展示'......
  • pytest xfail 已知错误 失败也不报错
    importpytest@pytest.mark.parametrize('a,b,sum',[#参数化出来3组数据(1,2,3),(2,3,5),(3,-19,-16)])deftest_add(a,b,sum):asserta+b==sum#如果名称等于main输出pytest.main([文档,sv参数])@pytest.mark.xfail#已知的错误失败也不报错d......
  • pytest 参数化
    importpytest@pytest.mark.parametrize('a,b,sum',[#参数化出来3组数据(1,2,3),(2,3,5),(3,-19,-16)])deftest_add(a,b,sum):asserta+b==sum#如果名称等于main输出pytest.main([文档,sv参数])if__name__=='__main__':pytest.main([__......
  • Test Parameter-批量生成测试用例
    TestParameter-批量生成测试用例_哔哩哔哩_bilibili1.背景:如果涉及多个被测目标,例如基于多个传感器输入值测试,测试环境包括Tester(测试方),ECU(被测对象),Tester发送传感器变量SensorA和SensorB,ECU反馈Force值的过程,根据不同传感器输入值测试Force反馈值,如何结合TestParameter和Tes......
  • cms和g1垃圾收集器
    一、cms垃圾收集器 jdk1.5之后出现在标记清理方法上做优化1、初始标记2、并发标记3、重新标记4、并发清除在1、3会StopTheWorld 描述:初始标记仅仅只是标记GCRoot可以直接关联到的对象,速度很快。并发标记是进行GCRoottracting的过程,重新标记是为了修正并发标记的......
  • 测试用例设计方法都有哪些
    在测试用例设计中,常用的方法包括等价类划分法、边界值分析法、因果图法、状态转换法、路径覆盖法和决策表法等。等价类划分法(EquivalencePartitioning):将输入值划分为等价类,从每个等价类中选择一个代表性的值作为测试用例。例如,对于一个要求输入1到100之间的数字的程序,可以将输入值......
  • 聚焦于任务调度的测试平台pytestx
    设计理念聚焦于任务调度,接口自动化80%本地编写,20%交由平台管理。如果使用pytest做接口自动化,那么个人认为最好的编写工具是PyCharm,任何低代码测试平台都无法取代。当然不会代码,或者不使用pytest,那低代码测试平台,或者yaml,甚至excel写自动化用例,都是可以接受的。而在使用pytest这......
  • 【腾讯 TMQ】移动 APP 测试用例设计的关注点
    应用的启动和停止1.1首次启动是否出现欢迎界面,欢迎界面的停留时间合理,欢迎界面后是否正常进入应用;首次启动时间是否合理;该拉取的信息是否正确;桌面图标是否创建成功,功能启动快捷键创建是否成功(某些安卓手机会有在桌面创建应用内某个功能的快捷键的需求)1.2二次启动启动时间是......