从一个或多个目录开始查找,可以在命令行指定文件名或目录名。如果未指定,则使用当前目录。
测试文件以 test_ 开头或以 _test 结尾
测试类以 Test 开头 ,并且不能带有 init 方法
测试函数以 test_ 开头
断言使用基本的 assert 即可
所有的包 pakage 必须要有__init__.py 文件
# test_2.py
import sysimport pytestdef add(x,y):return x + y@pytest.mark.add
def test_add():assert add(1,2) == 3assert add(2,3) == 5assert add(10,2) == 12def is_win32():return True if sys.platform == 'win32' else Falseclass TestDemo:def test_demo(self):x = "hello world"print(f"{x} python")assert 'h' in x@pytest.mark.skipif(sys.platform == 'win32',reason='win32跳过用例')def test_demo3(self):x = "hello world"print(f"{x} python")assert 'h' in xonly_win32 = pytest.mark.skipif(is_win32(),reason='win32跳过用例')@only_win32def test_demo4(self):x = "hello world"print(f"{x} python")assert 'h' in x@pytest.mark.skip("变更")def test_demo2(self):x = 'hello'assert hasattr(x,"check")@pytest.mark.xfail(reason="bug待修复")def test_demo5(self):x = 'hello'assert hasattr(x, "check")if __name__ == "__main__":pytest.main(['-v', '-s'])
1)执行全部
if name == "__main__": pytest.main(['-v', '-s'])
2)执行某个文件
if name == "__main__":
pytest.main(['-v', '-s','test_2.py'])
3)执行某个类
if name == "__main__":
pytest.main(['-v', '-s','test_2.py::TestDemo'])
4) 执行某个方法
if name == "__main__":
pytest.main(['-v', '-s','test_2.py::TestDemo::test_demo'])
5) mark 打标执行 pytest.mark.add
6) skip忽略执行 @pytest.mark.skip("变更")
7) 条件忽略skipif @pytest.mark.skipif(sys.platform == 'win32',reason='win32跳过用例')
8)xfail:预期失败 @pytest.mark.xfail
真失败会显示xfailed,成功会显示xpassed,应用场景:已知bug标注,后续验证修复