我尝试使用pytest
检查功能 - 这是我的代码:
# src/return_self.py
def return_self(n):
return n
# tests/return_self_test.py
import pytest
def test_1():
value = return_self(1)
assert value == 1
如何在src
文件中提出要求,以便我可以使用pytest
对其进行测试?我尝试了一些事情:
1. import return_self
2. from src.return_self import *
3. import sys
sys.path.append('../src')
4. import imp
return_self = imp.load_source('return_self', '/source/return_self.py')
我还在根目录和__init__.py
目录中尝试使用和不使用src
文件。但每次,我都会对错误E ModuleNotFoundError: No module named 'return_self'
进行一些修改。我如何在我的档案中要求?
答案 0 :(得分:3)
您可以尝试这种方法:
# tests/return_self_test.py
import os
import sys
import pytest
sys.path.insert(1, os.path.join(sys.path[0], '..'))
from src.return_self import return_self
def test_1():
value = return_self(1)
assert value == 1
答案 1 :(得分:2)
首先,你必须检查src /和tests /是否在同一个目录中,我检查了return_self
中导入return_self_test.py
的函数,结果如下:
Testpy搜索 test_ [prefix] 的文件,所以我建议将return_self_test.py更改为test_return_self.py
# src/return_self.py
def return_self(n):
return n
# tests/test_return_self.py
import return_self
def test_1():
value = return_self.return_self(1)
assert value == 1
最后,使用以下命令在cmd(在正确的路径中)或Pycharm终端中进行测试: py.test -v 瞧!它完成了(:
答案 2 :(得分:2)
我会建议setuptools
方法(使您的包可以分发:D )
项目文件'结构:
.
├── sample
│ ├── __init__.py
│ └── return_self.py
├── setup.cfg
├── setup.py
└── tests
└── test_return_self.py
其中sample/
目录与包的名称匹配,并且还必须包含源。
最小 setup.py 文件内容:
from setuptools import setup
setup(
setup_requires=['pytest-runner'],
tests_require=['pytest'],
name='sample'
)
这里我们正在配置我们的测试环境(您可以扩展tests_require
变量以包含更多测试要求)。
setup.cfg 文件内容:
[aliases]
test=pytest
在这里我们指定每次开发人员执行时都要运行命令pytest:python setup.py test
<强>测试/ test_return_self.py 强>
from pytest import *
from sample.return_self import return_self
def test_return_self():
assert return_self(4) == 4
<强>样品/ return_self.py 强>
def return_self(n):
return n
所以,接下来要做的就是运行:
python setup.py develop
使您的包可用(运行测试时)。如果您遇到权限被拒绝问题:将--user
选项附加到上一个命令以指示python您想要使用没有root权限的软件包 - 简而言之,软件包将安装到用户区目录中。 / p>
最后使用:
运行测试python setup.py test
注意:
python setup.py develop
只需运行一次)参考文献:
Integrating with setuptools / python setup.py test / pytest-runner