pytest与unittest有什么一眼可以看出的区别

一眼看出的区别(最直观的)主要是:写法风格和运行方式不一样

1)测试用例写法/组织方式

  • unittest:通常是“面向类 + 固定结构”。你会看到类似:
    • class xxx(unittest.TestCase):
    • self.assertXXX(...) 断言
    • 方法名常见 def test_xxx(self):
  • pytest:更“函数化/简洁”。你常见到:
    • 直接写 def test_xxx():
    • 断言用裸 assertassert x == y
    • 通常不强制继承 TestCase

所以看到“继承 unittest.TestCase + self.assert”基本就是 unittest;看到“裸 assert + 函数 test_”大概率是 pytest。

2)断言风格

  • unittestself.assertEqual(a, b)self.assertTrue(cond)
  • pytest:直接 assert a == b(失败时信息也更友好)

3)运行测试方式

  • unittest:常用 python -m unittest ...python -m unittest discover ...
  • pytest:一般直接 pytest,或 pytest 文件名.py::test_xxx

4)命令行效果(也算一眼)

  • pytest:输出更“报告式”,通常显示用例收集数量、通过/失败/跳过等更直观。
  • unittest:更偏标准库风格,整体信息密度没 pytest 那么“展示型”。

如果你愿意,把你看到的一段测试代码贴出来,我可以直接帮你判断它属于哪一个,并指出对应点。