赞
踩
目录
1)pytest.mark.parametrize装饰器实现测试用例参数化。
2)pytest_addoption 注册、pytestconfig 获取命令行参数
例子:实现检查一定的输入和期望输出测试功能
新建test_1.py文件:
- #coding:utf-8
- #实现检查一定的输入和期望输出测试功能
-
- import pytest
- @pytest.mark.parametrize("a,b",
- [("1+2", 3),
- ("5-3", 2),
- ("6*6", 30),
- ("81/9",8)
- ])
- def test_eval(a, b):
- assert eval(a) == b
-
- if __name__ == "__main__":
- pytest.main(["-s", "test_1.py"])
运行结果:
函数的参数,在运行结果中可以看到输入和输出值
使用内置的mark.xfail
新建test_2.py文件:
- #coding:utf-8
- #实现检查一定的输入和期望输出测试功能
-
- import pytest
- @pytest.mark.parametrize("a,b",
- [("1+2", 3),
- pytest.param("5-3", 4,marks=pytest.mark.xfail),
- ("6*6", 36),
- pytest.param("81/9",8,marks=pytest.mark.xfail),
- ])
- def test_eval(a, b):
- print("--------开始执行用例ooo-------")
- assert eval(a) == b
-
- if __name__ == "__main__":
- pytest.main(["-s", "test_2.py"])
运行结果:
x表示标记为失败的用例,预期结果是失败,实际运行也是失败,显示xfailed
.表示成功的用例,预期结果是成功,实际运行也是成功
若要获得多个参数化参数的所有组合,可以堆叠参数化装饰器
新建test_3.py文件:
两个参数a,b
- #若要获得多个参数化参数的所有组合,可以堆叠参数化装饰器
-
- import pytest
- @pytest.mark.parametrize("a",[0,1])
- @pytest.mark.parametrize("b",[3,4])
- def test_01(a,b):
- print("测试数据组合:a->%s,b->%s"%(a,b))
-
- if __name__ == "__main__":
- pytest.main(["-s", "test_3.py"])
运行结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。