Pytest权威教程22-优质集成实践
目录
优质集成实践使用pip安装包对于开发,我们建议你将[venv来安装应用程序和任何依赖项,以及 接下来, from setuptools import setup,find_packages setup(name="PACKAGENAME",packages=find_packages())
pip install -e . 它允许你更改源代码(测试和应用程序)并随意重新运行测试。这与运行类似,或者使用符号链接将你的包安装到开发代码中。 Python测试发现的约定
有关如何自定义测试发现的示例[更改标准(Python)测试发现。 在Python模块中, 选择测试布局结构/导入规则
在应用程序代码外测试如果你有许多函数测试,或者出于其他原因希望将测试与实际应用程序代码分开(通常是个好主意),那么将测试放入实际应用程序代码之外的额外目录可能会很有用: setup.py mypkg/ __init__.py app.py view.py tests/ test_app.py test_view.py ... 这有以下好处:
请注意,使用此方案时,你的测试文件必须具有唯一的名称,因为 如果需要具有相同名称的测试模块,可以将 setup.py mypkg/ ... tests/ __init__.py foo/ __init__.py test_view.py bar/ __init__.py test_view.py 现在Pytest将加载模块, 在这种情况下,强烈建议使用 setup.py src/ mypkg/ __init__.py app.py view.py tests/ __init__.py foo/ __init__.py test_view.py bar/ __init__.py test_view.py 这种布局可以防止许多常见的陷阱,并且有很多好处,这在[IonelCristianM?rie?的有更好的解释。 测试作为应用程序代码的一部分如果测试和应用程序模块之间存在直接关系并希望将它们与应用程序一起分发,则将测试目录内联到应用程序包中非常有用: setup.py mypkg/ __init__.py app.py view.py test/ __init__.py test_app.py test_view.py ... 在此方案中,使用以下 pytest --pyargs mypkg
请注意,此布局也与
这种有点进化的导入技术的原因在于,在较大的项目中,多个测试模块可能相互导入,因此导出规范的导入名称有助于避免出现意外情况,例如测试模块导入两次。 tox一旦完成了你的工作并希望确保你的实际软件包通过所有测试,你可能需要查看tox,virtualenv测试自动化工具及其[pytest支持。tox帮助你使用预定义的依赖项设置virtualenv环境,然后使用选项执行预配置的测试命令。它将针对已安装的软件包运行测试,而不是针对源代码检查,从而有助于检测包装故障。 与setuptools集成 将此添加到 from setuptools import setup setup( # ...,setup_requires=["pytest-runner",...],tests_require=["pytest",# ...,) 并在 [aliases] test=pytest 如果你现在输入: python setup.py test 这将使用执行你的测试 你还可以 [tool:pytest] addopts = --verbose python_files = testing/*/*.py 手动整合 如果由于某种原因你不想/不能使用 import sys from setuptools.command.test import test as TestCommand class PyTest(TestCommand): user_options = [("pytest-args=","a","Arguments to pass to pytest")] def initialize_options(self): TestCommand.initialize_options(self) self.pytest_args = "" def run_tests(self): import shlex # import here,cause outside the eggs aren't loaded import pytest errno = pytest.main(shlex.split(self.pytest_args)) sys.exit(errno) setup( # ...,tests_require=["pytest"],cmdclass={"pytest": PyTest},) 现在,如果你运行: python setup.py test 这将 python setup.py test -a "--durations=5" 相当于运行 片状”测试是表现出间歇性或偶发性失败的测试,似乎具有非确定性行为。有时它会通过,有时会失败,而且不清楚为什么。本页讨论了可以提供帮助的pytest函数以及识别,修复或减轻它们的其他一般策略。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |