天天看点

Pytest fixture 用法[email protected]( ):无参数的用法[email protected]( ):有参数的用法

[email protected]( ):无参数的用法

1.第一种方式:-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
	@pytest.fixture( )
	def user( ):
	    name = 'mixintu'
	    password = '123456'
	    return name, password

	def test_user(user):
	    assert user[0] == "mixintu"
	    assert user[1] == "123456"
	    
2.第二种方式:-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
	@pytest.fixture( )
	def user( ):
	    name = 'mixintu'
	    return name
	
	
	@pytest.fixture( )
	def password( ):
	    password = '123456'
	    return password
	
	
	def test_user(user, password):
	    assert user == "mixintu"
	    assert password == "1234567"
3.第三种方式:-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
	@pytest.fixture( )
	def user( ):
	    name = 'mixintu'
	    return name
	
	
	@pytest.fixture( )
	def pw(user):
	    name = user
	    password = '123456'
	    return name, password
	
	
	def test_user(pw):
	    assert pw[0] == 'mixintu'
	    assert pw[1] == '1234567'
  


           

输出:

__________________________________ test_user __________________________________

	user = ('mixintu', '123456')
	
	    def test_user(user):
	        assert user[0] == "mixintu"
	>       assert user[1] == "1234567"
	E       AssertionError: assert '123456' == '1234567'
	E         - 123456
	E         + 1234567
	E         ?       +
	
	test_example.py:82: AssertionError
========================== 1 failed in 0.09 seconds ===========================
           

[email protected]( ):有参数的用法

1.第一种方式:-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
	@pytest.fixture( )  # 添加fixture后,执行inty方法就是执行fun()方法
	def inty( ):
	    return "connect to hello world"
	
	
	class TestCase_01( ):
	    # inty参数名必须同fixture的inty方法名相同才能传递inty的值
	    def test_open_baidu(self, inty):
	        print("============{}".format(inty))

2.第二种方式:-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
	@pytest.fixture(params = [{'userID': '00001', 'username': 'jack'},
	                          {'userID': '00002', 'username': 'mike'}])
	def getdata(request):  # 这里的request是固定参数名
	    print("request.param======".format(request.param))
	    return request.param  # 这里的request.param也是固定的
	
	
	class TestCase_02( ):
	    def test_case1(self, getdata):
	        print("第1个用例输出:{}".format(getdata))
	
	    def test_case2(self, getdata):
	        print("第2个用例输出:{}".format(getdata))

3.第三种方式:-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
	class TestCase_03( ):
	    # parametrize:直接加测试数据
	    @pytest.mark.parametrize("params_A",
	                             [{'userID': '00001', 'username': 'jack'},
	                              {'userID': '00002', 'username': 'mike'}])
	    def test_case1(self, params_A):
	        print("第1个用例输出:{}".format(params_A))
	
	    @pytest.mark.parametrize("params_B",
	                             [{'userID': '00003', 'username': 'tina'},
	                              {'userID': '00004', 'username': 'book'}])
	    def test_case2(self, params_B):
	        print("第2个用例输出:{}".format(params_B))

           

输出:

Pytest fixture 用法[email protected]( ):无参数的用法[email protected]( ):有参数的用法