ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python-pytest学习(十五)-fixture详解

2020-05-09 13:52:51  阅读:236  来源: 互联网

标签:__ python fixture pytest user test def


一、前言

  fixture是pytest的核心功能,也是亮点功能,熟练掌握fixture的使用方法,pytest用起来才会得心应手!

二、fixture简介

  fixture的目的是提供一个固定基线,在该基线上测试可以可靠地和重复地执行。fixture提供了区别于传统单元测试(setup/teardown)有显著改进:

(1)有独立的命名,并通过声明它们从测试函数、模块、类或整个项目中的使用来激活;

(2)按模块化的方式实现,每个fixture都可以相互调用;

(3)fixture的范围从简单的单元扩展到复杂的功能测试,允许根据配置和组件选项对fixture和测试用例进行参数化,或者跨函数function,类class,模块module或整个测试会话session范围。

三、fixture作为参数传入

  定义fixture跟定义普通函数差不多,唯一区别就是在函数上加个装饰器@pytest.fixture(),fixture命名不要用test_开头,跟用例区分开。用例才是test_开头的命名。

  fixture是可以有返回值的,如果没return默认返回None。用例调用fixture的返回值,直接就是吧fixture的函数名称当成变量名称,如下案例

import pytest

@pytest.fixture()
def user():
    print("获取用户名")
    a = "admin"
    return a

def test_1(user):
    assert user == "admin"

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

运行结果:

 

 四、error和failed区别

测试结果一般有三种:passed、failed、error。(skip的用例除外)

如果在test_用例里面断言失败,那就是failed

import pytest

@pytest.fixture()
def user():
    print("获取用户名")
    a = "admin"
    return a

def test_1(user):
    assert user == "admin111"

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

 

如果在fixture里面断言失败了,那就是error

import pytest

@pytest.fixture()
def user():
    print("获取用户名")
    a = "admin"
    assert a == "admin123"
    return a

def test_1(user):
    assert user=="admin"

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

 

参考文章:https://www.jianshu.com/p/8b21deb27262

 

标签:__,python,fixture,pytest,user,test,def
来源: https://www.cnblogs.com/zhaocbbb/p/12856970.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有