• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Pytest之测试命名规则的使用

    背景:

    pytest以特定规则搜索测试用例,所以测试用例文件、测试类以及类中的方法、测试函数这些命名都必须符合规则,才能被pytest搜索到并加入测试运行队列中。

    默认搜索规则:

    测试用例默认命名规则

    tips: 测试类的不应该有构造函数。

    笔者习惯装测试用例的文件夹,测试用例文件,测试函数,类中的测试方法都以test_开头。建议保持一种统一的风格。

    示例:

    # func.py
    def add(a,b):
     return a+b
    
    # ./test_case/test_func.py
    import pytest
    from func import *
    
    class TestFunc:
    
     #def __init__(self):
      #self.a = 1
    
     def test_add_by_class(self):
      assert add(2,3) == 5
    
    
    def test_add_by_func():
     assert add(4,6) == 10
    
    '''
    # stdout:
    ============================= test session starts =============================
    platform win32 -- Python 3.7.0, pytest-5.3.4, py-1.8.1, pluggy-0.13.1
    rootdir: D:\Python3.7\project\pytest
    plugins: allure-pytest-2.8.9, rerunfailures-8.0
    collected 2 items
    
    test_case\test_func.py ..                                                [100%]
    
    ============================== 2 passed in 0.04s ==============================
    [Finished in 1.3s]
    ######################################################################
    '''

    测试结果中,test_case\test_func.py … 。两个点号代表两个测试用例。

    错误示范,当测试类有构造函数时:

    # func.py
    def add(a,b):
     return a+b
    
    # ./test_case/test_func.py
    import pytest
    from func import *
    
    class TestFunc:
    
     def __init__(self):
      self.a = 1
    
     def test_add_by_class(self):
      assert add(2,3) == 5
    
    
    def test_add_by_func():
     assert add(4,6) == 10
    
    '''
    # stdout:
    ============================= test session starts =============================
    platform win32 -- Python 3.7.0, pytest-5.3.4, py-1.8.1, pluggy-0.13.1
    rootdir: D:\Python3.7\project\pytest
    plugins: allure-pytest-2.8.9, rerunfailures-8.0
    collected 1 item
    
    test_case\test_func.py .                                                 [100%]
    
    ============================== warnings summary ===============================
    test_case\test_func.py:4
      D:\Python3.7\project\pytest\test_case\test_func.py:4: PytestCollectionWarning: cannot collect test class 'TestFunc' because it has a __init__ constructor (from: test_case/test_func.py)
        class TestFunc:
    
    -- Docs: https://docs.pytest.org/en/latest/warnings.html
    ======================== 1 passed, 1 warning in 0.04s =========================
    [Finished in 1.4s]
    ######################################################################
    '''

    会报错,pytest只能找到test_开头的函数,但是不能找到Test开头的含有构造函数的测试类。

    自定义测试用例命名规则

    如果因为某种需要,需要使用其他命名规则命名的测试文件、测试函数、测试类以及测试类的方法,可以通过pytest.ini配置文件做到。

    在测试系统的顶层目录创建pytest.ini文件,在pytest.ini文件中写入如下配置:

    [pytest]
    # 更改测试文件命名规则
    python_files = HG*
    
    # 更改测试类命名规则
    python_classes = HG*
    
    # 更嗨测试函数命名规则
    python_functions = HG*
    
    

    示例:

    # func.py
    def add(a,b):
     return a+b
    
    # ./test_case/HG_func.py
    import pytest
    from func import *
    
    class HGFunc:
    
     #def __init__(self):
      #self.a = 1
    
     def HG_add_by_class(self):
      assert add(2,3) == 5
    
    
    def HG_add_by_func():
     assert add(4,6) == 10
    
    '''
    stdout:
    ============================= test session starts =============================
    platform win32 -- Python 3.7.0, pytest-5.3.4, py-1.8.1, pluggy-0.13.1 -- D:\Python3.7\python.exe
    cachedir: .pytest_cache
    rootdir: D:\Python3.7\project\pytest, inifile: pytest.ini
    plugins: allure-pytest-2.8.9, rerunfailures-8.0
    collecting ... collected 2 items
    
    test_case/HG_func.py::HGFunc::HG_add_by_class PASSED                     [ 50%]
    test_case/HG_func.py::HG_add_by_func PASSED                              [100%]
    
    ============================== 2 passed in 0.03s ==============================
    [Finished in 1.3s]
    '''

    Tips:

    到此这篇关于Pytest之测试命名规则的使用的文章就介绍到这了,更多相关Pytest 命名规则内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • 详解用Pytest+Allure生成漂亮的HTML图形化测试报告
    • python pytest进阶之conftest.py详解
    • python pytest进阶之fixture详解
    • Pytest测试框架基本使用方法详解
    • Pytest mark使用实例及原理解析
    • 简单了解pytest测试框架setup和tearDown
    • python的pytest框架之命令行参数详解(下)
    • python单元测试框架pytest的使用示例
    上一篇:pycharm debug 断点调试心得分享
    下一篇:Python中Jupyter notebook快捷键总结
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Pytest之测试命名规则的使用 Pytest,之,测试,命名,规则,