Pytest中装饰器@pytest.mark.parametrize(\’参数名\’,list)可以实现测试用例参数化,类似DDT
如:@pytest.mark.parametrize(\’请求方式,接口地址,传参,预期结果\’,[(\’get\’,\’www.baidu.com\’,\'{\”page\”:1}\’,\'{\”code\”:0,\”msg\”:\”成功\”})\’,(\’post\’,\’www.baidu.com\’,\'{\”page\”:2}\’,\'{\”code\”:0,\”msg\”:\”成功\”}\’)])
1、第一个参数是字符串,多个参数中间用逗号隔开
2、第二个参数是list,多组数据用元祖类型;传三个或更多参数也是这样传。list的每个元素都是一个元组,元组里的每个元素和按参数顺序一一对应
3、传一个参数 @pytest.mark.parametrize(\’参数名\’,list) 进行参数化
4、传两个参数@pytest.mark.parametrize(\’参数名1,参数名2\’,[(参数1_data[0], 参数2_data[0]),(参数1_data[1], 参数2_data[1])]) 进行参数化
import pytest #单参数单值 @pytest.mark.parametrize(\"user\",[\"18221124104\"]) def test(user): print(user) assert user==\"18221124104\" \"C:\\Program Files\\Python35\\python.exe\" C:/Users/wangli/PycharmProjects/Test/test/test03.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:\\Users\\wangli\\PycharmProjects\\Test\\test collected 1 item test03.py 18221124104 . ============================== 1 passed in 0.15s ============================== Process finished with exit code 0 #单参数多值 @pytest.mark.parametrize(\"user\",[\"18221124104\",\"18200000000\",\"18200000001\"]) def test(user): print(user) assert user==\"18221124104\" \"C:\\Program Files\\Python35\\python.exe\" C:/Users/wangli/PycharmProjects/Test/test/test03.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:\\Users\\wangli\\PycharmProjects\\Test\\test collected 3 items test03.py 18221124104 .18200000000 F18200000001 F ================================== FAILURES =================================== ______________________________ test[18200000000] ______________________________ user = \'18200000000\' @pytest.mark.parametrize(\"user\",[\"18221124104\",\"18200000000\",\"18200000001\"]) def test(user): print(user) > assert user==\"18221124104\" E AssertionError test03.py:74: AssertionError ______________________________ test[18200000001] ______________________________ user = \'18200000001\' @pytest.mark.parametrize(\"user\",[\"18221124104\",\"18200000000\",\"18200000001\"]) def test(user): print(user) > assert user==\"18221124104\" E AssertionError test03.py:74: AssertionError ========================= 2 failed, 1 passed in 0.21s ========================= Process finished with exit code 0 #多参数多值 @pytest.mark.parametrize(\"user,pwd\",[(\"18221124104\",111111),(\"18200000000\",111111)]) def test(user,pwd): print(user,pwd) \"C:\\Program Files\\Python35\\python.exe\" C:/Users/wangli/PycharmProjects/Test/test/test03.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:\\Users\\wangli\\PycharmProjects\\Test\\test collected 2 items test03.py 18221124104 111111 .18200000000 111111 . ============================== 2 passed in 0.03s ============================== Process finished with exit code 0 # 使用内置的mark.xfail标记为失败的用例就不运行了,直接跳过显示xfailed @pytest.mark.parametrize(\"user,pwd\",[(\"18221124104\",111111),pytest.param(\"18200000000\",111111,marks=pytest.mark.xfail)]) def test(user,pwd): print(user,pwd) assert user == \"18221124104\" assert pwd== 111111 \"C:\\Program Files\\Python35\\python.exe\" C:/Users/wangli/PycharmProjects/Test/test/test03.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:\\Users\\wangli\\PycharmProjects\\Test\\test collected 2 items test03.py 18221124104 111111 .18200000000 111111 x ======================== 1 passed, 1 xfailed in 0.14s ========================= Process finished with exit code 0 #若要获得多个参数化参数的所有组合,可以堆叠参数化装饰器 @pytest.mark.parametrize(\"x\", [0, 1]) @pytest.mark.parametrize(\"y\", [2, 3]) def test_foo(x, y): print(\"测试数据组合:x->%s, y->%s\" % (x, y)) if __name__==\"__main__\": pytest.main([\"-s\",\"test03.py\"]) \"C:\\Program Files\\Python35\\python.exe\" C:/Users/wangli/PycharmProjects/Test/test/test03.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:\\Users\\wangli\\PycharmProjects\\Test\\test collected 4 items test03.py 测试数据组合:x->0, y->2 .测试数据组合:x->1, y->2 .测试数据组合:x->0, y->3 .测试数据组合:x->1, y->3 . ============================== 4 passed in 0.03s ============================== Process finished with exit code 0
© 版权声明
THE END
暂无评论内容