在Python包中运行测试时未定义函数

2024-05-01 22:09:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个Python包/库。我的目录结构如下所示:

my_package/
|-- my_package/
|   |-- tests/
|   |   |-- __init__.py
|   |   |-- my_tests.py
|   |   
|   |-- __init__.py
|   |-- main.py
|
|-- setup.py

我的所有功能都在主.py文件:

def sum_nums(a,b):
    res = a + b
    return(res)

def mult_nums(a,b):
    res = a * b
    return(res)

def sub_nums(a,b):
    res = a - b
    return(res)

我的_测试.py如下所示:

from unittest import TestCase

import my_package

def test_sum():
    assert sum_nums(3,4) == 7

def test_mult():
    assert mult_nums(3,4) == 12

def test_sub():
    assert sub_nums(3,4) == -1

当我从包根目录运行测试时,如下所示:

python setup.py test

。。。我得到以下错误:

NameError: name 'sum_nums' is not defined
  • 我的包目录结构正确吗?你知道吗
  • 我是否丢失了一个初始化文件?你知道吗
  • 是否每个目录都需要一个init.py文件?你知道吗
  • 把我所有的功能放在一个主.py文件 不使用ifname==“main”?你知道吗

Tags: 文件pytest目录packagereturninitmy
2条回答

测试不应该在包中,所以将它向上移动一个目录。例如,参见sanic或github中的任何其他模块。您的函数需要在init.py中可用。你可以像sanic那样导入它们。你知道吗

https://github.com/huge-success/sanic

你还需要

from my_package import sum_nums, mult_nums, sub_nums 

或者以我的包为前缀。你知道吗

您需要指出被测试的函数是针对my_package包的,比如:

from unittest import TestCase

import my_package

def test_sum():
    assert my_package.sum_nums(3,4) == 7

def test_mult():
    assert my_package.mult_nums(3,4) == 12

def test_sub():
    assert my_package.sub_nums(3,4) == -1

相关问题 更多 >