pytest 中的metadata

发布时间 2023-06-05 18:11:58作者: Tarzen

pytest中元数据(metadata)

注意我们在执行了 pytest testcase/test_001.py -v --html=res.html生成的html报告中有一些基本信息。这些信息怎么来的,我们能修改吗?

image

答案是可以的,在pytest中叫做metadata 元数据

  • 在执行命令时添加pytest testcase/test_001.py -v --metadata name tarzan 就会在报告中出现

  • conftest.py中使用钩子函数添加和修改、删除等

    # conftest.py
    import pytest
    
    @pytest.hookimpl(optionalhook=True)
    def pytest_metadata(metadata:dict):
        metadata['auth'] = 'Tarzan'
    
    • 可以在测试用例中访问metadate

      使用metadata fixture

      # test_001.py
      
      def test_1(metadata):
          print(metadata)
          print(type(metadata))
          assert 'metadata' not in metadata['Plugins']
      

      输出:

      {'Python': '3.7.3', 'Platform': 'Linux-5.10.0-amd64-desktop-x86_64-with-uos-20-eagle', 'Packages': {'pytest': '6.2.5', 'pluggy': '1.0.0'}, 'Plugins': {'playwright': '0.3.0', 'anyio': '3.6.2', 'base-url': '2.0.0', 'rerunfailures': '10.2', 'repeat': '0.9.1', 'timeout': '2.1.0', 'metadata': '2.0.4', 'allure-pytest': '2.9.45', 'html': '3.2.0'}, 'JAVA_HOME': '/usr/lib/jvm/java-11-openjdk-amd64', 'auth': 'Tarzan', 'Base URL': ''}
      <class 'dict'>