python - 如何将 Python 单元测试指定为具有数据库依赖性?

标签 python unit-testing continuous-integration functional-testing

我正在从事一个项目,该项目有许多“单元测试”,这些单元测试具有需要与数据库和其他 API 交互的硬依赖性。这些测试对我们的团队来说是宝贵且有用的资源,但如果不依赖测试环境中其他服务的功能,它们就无法独立运行。我个人会将这些称为“功能测试”,但这只是我们团队中已经建立的语义。

问题是,既然我们开始在我们的代码中引入更多的纯单元测试,我们就会有一堆有或没有外部依赖性的测试。这些测试可以在 checkout 代码后立即运行,无需安装或配置其他工具。它们也可以在像 jenkins 这样的持续集成环境中运行。

所以我的问题是,如何表示哪个是更清晰的分离?单元测试库中是否有现有的装饰器?

最佳答案

您可以使用 skipIf 装饰器定义应该跳过哪个测试。结合设置环境变量,您可以跳过某些环境中的测试。一个例子:

from unittest import skipIf

class MyTest(Testcase):

    @skipIf(os.environ.get('RUNON') == 'jenkins', 'Does not run in Jenkins')
    def test_my_code(self):
        ...

关于python - 如何将 Python 单元测试指定为具有数据库依赖性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39127624/

相关文章:

java - 使用封闭类运行 PowerMock

java - 如何通过 SSL 连接配置 TeamCity 电子邮件通知?

python - 如何解决 "TypeError: unorderable types: str() < int()"错误?

python - 安装requirements.txt中选定的软件包

python - 如何基于Tensorflow模型进行预测

netbeans - 在 Jenkins 上设置 Netbeans 项目

gitlab - 当 GItlab CI 上一阶段失败时阻止部署

python - 在 Python 中使用多处理时如何节省内存?

python - 测试依赖于硬件的 Python 代码

javascript - sinon 模拟上的发射函数