我熟悉使用setup.py文件来指定包具有单元测试:
import sys
from setuptools import setup, find_packages
version = open('VERSION').read().strip()
setup_options = dict(
name = 'web_api',
version = version,
author = 'me',
author_email = 'me@example.com',
url = 'http://www.example.com',
description = 'Lorem ipsum dolor fiat lux',
long_description = open('README.md').read().strip(),
license = 'MIT',
packages = find_packages(),
tests_require=[
'pytest'
],
install_requires=[
'click',
'Flask'
],
test_suite = 'tests'
)
setup(**setup_options)
使用此方法,可以说python setup.py test
并且tests
文件夹中的所有单元测试都会被执行。
我的项目通常会设置如下:
/
|..setup.py
|..mypackage/
|..|..__init__.py
|..|..somefile.py
|..tests/
|..|..test_something.py
|..|..test_somethingelse.py
当我运行python setup.py test
时,所有单元测试都会触发。
但是,有时使用python单元测试框架来编写集成测试(可能涉及真实数据库连接的测试,或伸出并触摸另一台服务器)也很方便。
我发现当我编写Web服务器应用程序时,我希望能够在生产中运行测试,以确保环境按预期工作。我发现在实践中,我似乎总是把一堆脚本放在一边进行生产“冒烟测试”,开发集成测试以及包装内的一堆常规单元测试。
以下是我的测试类别。我认为这并不奇怪。
在一个完美的世界中,所有这些代码都将在每次签到后由CI / CD机器执行。在实践中,如果不是,那就没关系。
目前,我们必须将所有内容放入旧的/tests
文件夹中。这意味着当我们说python setup.py test
时,一切都会被执行。这对于仅用于开发或仅用于生产的集成测试是不可取的。我们如何分解它们以便只有某些由python setup.py test
执行而其他的可以通过其他方式执行?
P.S。我可以使用pytest
。可以这样做吗?