我正在创建Python 程序包/库。我的目录结构如下所示:
my_package/
|-- my_package/
| |-- tests/
| | |-- __init__.py
| | |-- my_tests.py
| |
| |-- __init__.py
| |-- main.py
|
|-- setup.py
我在 main.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)
my_tests.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
答案 0 :(得分:2)
您需要指出被测试的功能是针对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
答案 1 :(得分:0)
测试不应放在包装中,因此请将其向上移动一个目录。例如,参见sanic或github中的任何其他模块。您的功能需要在 init .py中可用。您可以像在sanic中一样导入它们。
https://github.com/huge-success/sanic
您还需要
from my_package import sum_nums, mult_nums, sub_nums
或以my_package开头。