python - 如何在 pytest 中将单元测试和集成测试分开

标签 python unit-testing testing integration-testing pytest

根据 Wikipedia和各种articles最佳做法是将测试分为单元测试(首先运行)和集成测试(第二运行),其中单元测试通常非常快并且应该在 CI 环境中的每个构建中运行,但是集成测试需要更长的时间才能运行并且应该更像是每天运行。

有没有办法在pytest中划分这些?大多数项目似乎没有多个测试文件夹,所以有没有办法确保我根据情况(CI 与每日构建)只运行单元、集成或两者?在计算测试覆盖率时,我假设我必须同时运行两者。

在尝试将测试划分为这些类别时,我是否采用了正确的方法?是否有某个项目的一个很好的例子已经做到了这一点?

最佳答案

是的,您可以使用 pytest.mark 装饰器标记测试。

例子:

def unit_test_1():
    # assert here

def unit_test_2():
    # assert here

@pytest.mark.integtest
def integration_test():
    # assert here

现在,您可以从命令行运行 pytest -m "not integtest" 仅用于单元测试,pytest -m integtest 仅用于集成测试和普通的 pytest

(如果你愿意,你也可以用 pytest.mark.unit 装饰你的单元测试,但我觉得这有点乏味/冗长)

参见 documentation获取更多信息。

关于python - 如何在 pytest 中将单元测试和集成测试分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54898578/

相关文章:

c# - 这应该被 mock 还是被打断?

javascript - 如何在柏树中拖放 ul > li 元素

python - PyQt5 替代 Qtermwidget

Python 类变量初始化

python - asyncio 是否支持从非主线程运行子进程?

python - Fudge mock datetime.now

python - 当新数据到来时,如何重新训练 pyspark 中保存的线性回归 ML 模型

c# - Moq 验证方法失败,即使方法将被调用

ruby-on-rails - rails assert_redirect_to

xml - 从 XSD 模式生成用于测试的 XML 文件