如何用python编写函数的测试函数,无需类

如何用python编写函数的测试函数,无需类,python,unit-testing,testing,automated-tests,Python,Unit Testing,Testing,Automated Tests,我想测试一个函数,看看它是否工作正常 我找到了很多答案, 但是它们都在某个类下编写测试函数,而我的函数不是任何类的成员 例如,我在readTool.py下有: def extract_frame_dr(dr, frameID): return dr[0, frameID], dr[1, frameID] 如何为它编写测试\u提取\u帧\u dr? 我想拥有以下特点: 一次运行readTool.py中的所有测试,而不在主函数中逐个调用它们 谢谢您可以使用函数编写非常清晰的测试。为此, 使

我想测试一个函数,看看它是否工作正常

我找到了很多答案,

但是它们都在某个类下编写测试函数,而我的函数不是任何类的成员

例如,我在readTool.py下有:

def extract_frame_dr(dr, frameID):
    return dr[0, frameID], dr[1, frameID]
如何为它编写测试\u提取\u帧\u dr? 我想拥有以下特点: 一次运行readTool.py中的所有测试,而不在主函数中逐个调用它们


谢谢

您可以使用函数编写非常清晰的测试。为此,

  • 使python模块在测试文件中可导入(第1部分给出的示例)
  • 使用
    test_y()
    函数创建
    test_x.py
    模块,并使用
    python-m pytest
    运行它们
  • 1.用于编写测试的文件夹结构和设置 编写要测试的代码时,需要确保测试模块可导入模块。最简单的方法是使用如下文件夹结构:

    。
    │   setup.py
    │   
    ├───我的包裹
    │       readTool.py
    │       __初始值
    │
    ├───测验
    │       test_readtool.py
    │
    └───文夫
    
    其中
    setup.py
    是一个用于使软件包可安装的文件。在本例中,文件内容仅为

    导入设置工具
    setuptools.setup(
    name='mypackage',
    packages=setuptools.find_packages(),
    )
    
    您可能还想创建一个虚拟环境(
    venv
    ),激活它,然后在可编辑状态下安装软件包(
    mypackage

    pip install -e .
    
    然后,安装pytest

    pip install pytest
    
    (有关使用
    setup.py
    的更多信息,请参阅示例)

    2.用函数测试函数 写入
    测试/test\u readtool.py

    从mypackage.readTool导入提取\u帧\u dr
    def test_extract_frame_dr():
    帧id=1963
    何医生={
    (0,帧id):“William Hartnell”,
    (1,帧号):“Patrick Troughton”,
    }
    extracted=extract\u frame\u dr(dr\u who,frame\u id)
    断言提取[0]=“William Hartnell”
    断言提取[1]=“Patrick Troughton”
    
    并使用

    python -m pytest
    
    (仅运行
    pytest
    时,您可能会遇到
    ModuleNotFoundError
    s)

    3.测试模块和功能的自动发现 这是。只是

    • 将测试文件放入
      \tests\
      目录
    • 将您的测试模块命名为
      test_x.py
      其中
      x
      一个好的惯例是使用您正在测试的模块/包的名称
    • 将测试函数命名为
      test_y()
      ,其中
      y
      好的惯例是为测试编写一个简短的描述

    您只需调用
    x,y=extract\u frame\u dr(dr,frameID)
    。请注意,单词测试被忽略了