一旦你需要开发多条测试用例,你可能会想要使用类来组织它们。使用Pytest可以很轻松的创建包含多条用例的测试类:

  1. # content of test_class.py
  2. class TestClass:
  3. def test_one(self):
  4. x = "this"
  5. assert "h" in x
  6. def test_two(self):
  7. x = "hello"
  8. assert hasattr(x, "check")
  9. 代码注释: 如果运行这个测试类,将同时运行下面两个测试用例,
  10. 第一个测试用例是在判断 "h" 是不是 x 当中
  11. 第二个测试用例是在判断 x 名字是不是"check"
  12. 这里的 hasattr 只是一个函数 和我们学习的pytest 并没有太大关系
  13. 即使你将上面的代码写成这样最简单的断言也是可以的
  1. # content of test_class.py
  2. class TestClass:
  3. def test_one(self):
  4. x = "this"
  5. assert "h" in x
  6. def test_two(self):
  7. x = "hello"
  8. assert x == "check"

运行上面代码你可以在pycharm中看到第一个是通过的,第二个是失败的
image.png

pytest 运行测试用例机制

Pytest可以发现所有遵循Python测试用例发现约定规则的用例,所以它能找到Test开头的测试类外以及类中所有以test_开头的函数及方法。测试类无需再继承任何对象。我们只需要简单地通过文件名来运行这个模块即可。
也就是说他不需要像unnittest那样,需要继承 class TestClass(unittest.TestCase) ,你只需要按照pytest 命名规则进行取名字就好了,当然这个执行规则是可以改的,这需要用到后面的知识