根据 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/