setup和teardown可以实现在测试用例之前或之后加入一些操作,但这种是整个脚本全局生效的,如果我想实现以下场景:
用例1需要先登录,用例2不需要登录,用例3需要先登录。很显然这就无法用setup和teardown来实现了。这就是本篇学习的目的,自定义测试用例的预置条件
firture相对于setup和teardown来说应该有以下几点优势
conftest.py 管理一些预置的操作场景
conftest.py
import pytest
#fixture里面的teardown用yield来唤醒teardown的执行
@pytest.fixture()
def login():
print("输入账号,密码先登录")
yield
print("执行teardown!")
print("最后关闭浏览器")
test_fix1.py
import pytest
def test_s1(login):
print("用例1:登录之后其它动作111")
def test_s2(): # 不传login
print("用例2:不需要登录,操作222")
def test_s3(login):
print("用例3:登录之后其它动作333")
if __name__ == "__main__":
pytest.main(["-s", "test_fix1.py"])
运行结果:
test_fix1.py
输入账号,密码先登录
用例1:登录之后其它动作111
执行teardown!
最后关闭浏览器
用例2:不需要登录,操作222
输入账号,密码先登录
用例3:登录之后其它动作333
执行teardown!
最后关闭浏览器