实现用例1需要先登录,用例2不要登录,用例3需要先登录,很显然不能用setup和teardown来实现了,自定义测试用例的预置条件
fixture的优势
- 命名方式灵活,不局限于setup和teardown这些命名
- conftest.py配置里可以实现数据共享,不需要import就能自动找到一些配置
- scope = "module"可以实现多个.py跨文集共享前置
- scope ="session"以实现多个.py跨文集使用一个session来完成多个用例
- 使用装饰器标记fixture的功能:fixture(scope=“function”,params=None,autouse =False,ids=NOne,name =None):
Fixtures 可以选择使用yield语句为测试函数提供它们的值,而不是return。在这种情况下,yield语句之后的代码块作为拆卸代码执行,
而不管测试结果如何。fixture功能必须只产生一次
代码模板:(代码可能有空格问题,因为不是从pycharm里面复制过来的,需要注意)
#新建一个文件test_开头 如test_fix.py import pytest @pytest.fixture() def login(): print("输入帐号,密码 先登录") def test_s1(login): print("用例1:登录后,进入我的园子动作") def test_s2()#不传login print("用例2:不用登录,比如浏览博客") def test_s3(login): print("用例3:登录后,评论博客") if __name =="__main__": pytest.main(["-s", "test_fix.py"])