pytest学习笔记3

1、函数传参数

  • 当前置用例函数需要传参
import pytest
test_login_data = [("admin","admin"),("user","123456")]
def login(user, pwd):
    print(f"登录用户名:{user}")
    print(f"登录密码:{pwd}")
    if pwd == "admin":
        return True
    else:
        return False
        
@pytest.mark.parametrize("user, pwd",test_login_data)
def test_login(user, pwd):
    result = login(user, pwd)
    assert result == True, "失败原因:密码不正确"
    
if __name__ == '__main__':
    pytest.main(["-s", "test_fixture_request.py"])

执行结果:有2个用例,一个测试通过,一个测试失败了,互不影响

test_fixture_request.py
 .登录用户名:admin
登录密码:admin
F登录用户名:user
登录密码:123456

AssertionError: 失败原因:密码不正确

2、request传参

  • 如果想把登录操作放到前置操作里,也就是用到@pytest.fixture装饰器,传参就用默认的request参数
    user = request.param 这一步是接收传入的参数,本案例是传一个参数情况
import pytest
test_login_data = ["admin","12345"]

@pytest.fixture(scope="module")
def login(request):
    user = request.param
    print(f"登录用户名:{user}")
    return user

@pytest.mark.parametrize("login", test_login_data,indirect=True)
def test_login(login):
    a = login
    print(f"测试用李中login的返回值{a}")
    assert a != ""

if __name__ == '__main__':
    pytest.main(["-s", "test_fixture_request2.py"])

添加indirect=True参数是为了把login当成一个函数去执行,而不是一个参数
执行结果:

test_fixture_request2.py 
登录用户名:admin
.测试用李中login的返回值admin
登录用户名:12345
.测试用李中login的返回值12345

3、request传2个参数

import pytest
test_login_data = [{
    
    "user":"admin","pwd":"1111"},{
    
    "user":"user","pwd":"123456"}]

@pytest.fixture(scope="module")
def login(request):
    user = request.param["user"]
    pwd = request.param["pwd"]
    print(f"登录用户名:{user}")
    print(f"登录密码:{pwd}")
    if pwd == "123456":
        return True
    else:
        return False

@pytest.mark.parametrize("login", test_login_data,indirect=True)
def test_login(login):
    a = login
    print(f"测试用李中login的返回值{a}")
    assert a ,"失败原因:密码错误"

if __name__ == '__main__':
    pytest.main(["-s", "test_fixture_request3.py"])

执行结果:

test_fixture_request3.py 登录用户名:admin
登录密码:1111
F测试用李中login的返回值False
test_fixture_request3.py:24: AssertionError
test_fixture_request3.py 登录用户名:admin
登录密码:1111
F测试用李中login的返回值False```

# 4、自定义mark标记
```python
import pytest
@pytest.mark.add
def test_mark01():
   print("执行mark01用例。。。")

@pytest.mark.add
def test_mark02():
   print("执行mark02用例。。。")

def test_mark03():
   print("执行mark03用例。。。")

def test_mark04():
   print("执行mark04用例。。。")

运行add标记的用例

pytest -m "add" -s

不运行add标记的用例

pytest -m "not add" -s

猜你喜欢

转载自blog.csdn.net/LiaoBin0608/article/details/106677550