当前位置: 首页 > wzjs >正文

学校网站报价单用什么软件开发手机app

学校网站报价单,用什么软件开发手机app,郑州网站优化汉狮网络,国内产品设计公司前十名1. 简介 fixture是pytest的一个闪光点,pytest要精通怎么能不学习fixture呢?跟着我一起深入学习fixture吧。其实unittest和nose都支持fixture,但是pytest做得更炫。 fixture是pytest特有的功能,它用pytest.fixture标识&#xff0c…

1. 简介

fixture是pytest的一个闪光点,pytest要精通怎么能不学习fixture呢?跟着我一起深入学习fixture吧。其实unittest和nose都支持fixture,但是pytest做得更炫。


fixture是pytest特有的功能,它用pytest.fixture标识,定义在函数前面。在你编写测试函数的时候,你可以将此函数名称做为传入参数,pytest将会以依赖注入方式,将该函数的返回值作为测试函数的传入参数。


fixture有明确的名字,在其他函数,模块,类或整个工程调用它时会被激活。
fixture是基于模块来执行的,每个fixture的名字就可以触发一个fixture的函数,它自身也可以调用其他的fixture。


我们可以把fixture看做是资源,在你的测试用例执行之前需要去配置这些资源,执行完后需要去释放资源。比如module类型的fixture,适合于那些许多测试用例都只需要执行一次的操作。
fixture还提供了参数化功能,根据配置和不同组件来选择不同的参数。
fixture主要的目的是为了提供一种可靠和可重复性的手段去运行那些最基本的测试内容。比如在测试网站的功能时,每个测试用例都要登录和退出,利用fixture就可以只做一次,否则每个测试用例都要做这两步也是冗余。

pytest 提供的 fixture 实现 unittest 中 setup/teardown 功能,可以在每次执行case之前初始化数据。不同点是,fixture 可以只在执行某几个特定 case 前运行,只需要在运行 case 前调用即可。比 setup/teardown 使用起来更灵活。上一篇讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作,但这种是整个脚本全局生效的,如果我想实现以下场景:用例1需要先登录,用例2不需要登录,用例3需要先登录。很显然这就无法用setup和teardown来实现了。这就是本篇学习的目的,自定义测试用例的预置条件

2. fixture scope 作用范围

 先看下 fixture 函数的定义:

  使用装饰器标记fixture的功能 可以使用此装饰器(带或不带参数)来定义fixture功能。 fixture功能的名称可以在以后使用 引用它会在运行测试之前调用它:test模块或类可以使用pytest.mark.usefixtures(fixturename标记。 测试功能可以直接使用fixture名称作为输入参数,在这种情况下,夹具实例从fixture返回功能将被注入。

def fixture(scope="function", params=None, autouse=False, ids=None, name=None):""":arg scope:    可选四组参数:function(默认)、calss、module、package/session:arg params:   一个可选的参数列表,它将导致多个参数调用fixture函数和所有测试使用它。:arg autouse:  如果为True,则fixture func将为所有测试激活可以看到它。如果为False(默认值),则需要显式激活fixture。:arg ids:      每个参数对应的字符串id列表,因此它们是测试id的一部分。如果没有提供id,它们将从参数中自动生成。:arg name:     fixture的名称。 这默认为装饰函数的名称。 如果fixture在定义它的同一模块中使用,夹具的功能名称将被请求夹具的功能arg遮蔽; 解决这个问题的一种方法是将装饰函数命名 “fixture_ <fixturename>”然后使用”@ pytest.fixture(name ='<fixturename>')”。"""

 重点说下 scope 四组参数的意义:

  • function:每个方法(函数)都会执行一次。

  • class:每个类都会执行一次。类中有多个方法调用,只在第一个方法调用时执行。

  • module:一个 .py 文件执行一次。一个.py 文件可能包含多个类和方法。

  • package/session:多个文件调用一次,可以跨 .py 文件。

 在所需要调用的函数前面加个装饰器 @pytest.fixture()。举一个简单的例子:

3. fixture 优点

1.firture相对于setup和teardown来说应该有以下几点优势:

  • 命名方式灵活,不局限于setup和teardown这几个命名
  • conftest.py 配置里可以实现数据共享,不需要import就能自动找到一些配置
  • scope=”module” 可以实现多个.py跨文件共享前置
  • scope=”session” 以实现多个.py跨文件使用一个session来完成多个用例

4. fixture参数传入(scope=”function”)

例如这样的测试场景:宏哥这里就拿博客园举个例子:

测试用例1:需要登录博客园,发布随笔

测试用例2:不需要登录博客园,浏览文章

测试用例3:需要登录博客园,删除随笔

4.1 代码实现:

把一个函数定义为Fixture很简单,只能在函数声明之前加上“@pytest.fixture”。其他函数要来调用这个Fixture,只用把它当做一个输入的参数即可。

4.2 参考代码:
# coding=utf-8
# 1.导入模块
#  content of  test_bjhg_class1.pyimport pytest# 不带参数时默认scope="function"
@pytest.fixture(scope='function')
def login():print("登录博客园")def test_1(login):print('测试用例1,登录博客之后发布随笔111')def test_2():print('测试用例2,不需要登录博客,浏览文章222')def test_3(login):print('测试用例2,登录博客之后删除随笔333')
if __name__ == "__main__":pytest.main(["-s", "test.py"])
4.3 运行结果:

运行代码后,控制台打印如下图的结果

下面是运行结果,test_1和test_3运行之前都调用了login,也就是login执行了两次。默认情况下,fixture是每个测试用例如果调用了该fixture就会执行一次的。

2.如果@pytest.fixture()里面没有参数,那么默认scope=”function”,也就是此时的级别的function,针对函数有效。

5. conftest.py配置

5.1 conftest.py配置需要注意以下点:

conftest.py配置脚本名称是固定的,不能改名称

conftest.py与运行的用例要在同一个pakage下,并且有init.py文件

不需要import导入 conftest.py,pytest用例会自动查找

1.上面一个测试场景是在同一个.py文件中,多个用例调用一个登陆功能,如果有多个.py的文件都需要调用这个登陆功能的话,那就不能把登陆写到用例里面去了。
此时应该要有一个配置文件,单独管理一些预置的操作场景,pytest里面默认读取conftest.py里面的配置

5.2 conftest.py
5.2.1 代码实现:

5.2.2 参考代码:
# coding=utf-8
# 1.导入模块
#  content of  conftest.pyimport pytest# 不带参数时默认scope="function"
@pytest.fixture(scope='function')
def login():print("登录博客")
5.3 test_fix1.py
5.3.1 代码实现:

5.3.2 参考代码:
# coding=utf-8
# 1.导入模块
#  content of  test_fix1.pyimport pytestdef test_1(login):print('测试用例1,登录博客之后发布随笔111')def test_2():print('测试用例2,不需要登录博客,浏览文章222')def test_3(login):print('测试用例2,登录博客之后删除随笔333')
if __name__ == "__main__":pytest.main(["-s", "test_fix1.py"])
5.3.3 运行结果:

运行代码后,控制台打印如下图的结果

5.4 test_fix2.py
5.4.1 代码实现:

5.4.2 参考代码:
# coding=utf-8
# 1.导入模块
#  content of  test_fix2.pyimport pytestdef test_4(login):print('测试用例4,登录博客园之后修改头像444')def test_5():print('测试用例5,不需要登录博客园,浏览首页555')def test_6(login):print('测试用例6,登录博客园之后保存随笔666')
if __name__ == "__main__":pytest.main(["-s", "test_fix2.py"])
5.4.3 运行结果:

运行代码后,控制台打印如下图的结果

单独运行test_fix1.py和test_fix2.py都能调用到login()方法,这样就能实现一些公共的操作可以单独拿出来了

6. 小结

  如果你的程序出现了下面的错误,就是开始忘记添加‘import pytest',所以不要忘记哦。

=================================== ERRORS ====================================
_________________ ERROR collecting test_fixture_decorator.py __________________
test_fixture_decorator.py:2: in <module>@pytest.fixture()
E   NameError: name 'pytest' is not defined
!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!
=========================== 1 error in 0.36 seconds ===========================


文章转载自:

http://wMfNJZi1.wpwyx.cn
http://Dx4ZMYm6.wpwyx.cn
http://AXdlv5IN.wpwyx.cn
http://9lPgQmEX.wpwyx.cn
http://DRu5Z2sH.wpwyx.cn
http://cM1X6bOY.wpwyx.cn
http://1isTklEH.wpwyx.cn
http://N4rf0dMm.wpwyx.cn
http://MCmHHBX0.wpwyx.cn
http://ZS8GR9eX.wpwyx.cn
http://CLXM8ilM.wpwyx.cn
http://N44hg8YM.wpwyx.cn
http://dFwXR6t0.wpwyx.cn
http://E2BF0t1D.wpwyx.cn
http://AAm4loHR.wpwyx.cn
http://1x72Ivhu.wpwyx.cn
http://TMZkvdWZ.wpwyx.cn
http://ie29nkOO.wpwyx.cn
http://AuaMiAYX.wpwyx.cn
http://DvhwGDdt.wpwyx.cn
http://tsvHqdQi.wpwyx.cn
http://Bk0SdNF7.wpwyx.cn
http://LWoJ9uZj.wpwyx.cn
http://xY1LnDRg.wpwyx.cn
http://3m4GLNtQ.wpwyx.cn
http://aHjepZTH.wpwyx.cn
http://UGr1cK5k.wpwyx.cn
http://T5iHTK4d.wpwyx.cn
http://4LIawmcQ.wpwyx.cn
http://IY290NSK.wpwyx.cn
http://www.dtcms.com/wzjs/687770.html

相关文章:

  • 户外媒体网站建设免费网站地图的形式
  • 自己开发网站需要什么技术移动端ui
  • 定制网站开发流程图南京宜电的网站谁做的
  • 网站的域名每年都要续费wordpress 到小程序
  • wordpress分享视频网站自己做直播网站
  • 合肥比较好的网站制作百度整站优化
  • 企业建立网站的原因北京软件开发公司排行
  • 门户网站开发jz190网站建设p2p
  • 杭州品牌网站建设重庆网站建设及优化公司
  • 舟山建设工程信息网站库存管理软件有哪些
  • 深圳设计网站培训前程无忧企业官方网站
  • 备案的网站每年都要备案么最近高清中文在线国语字幕
  • 会展网站建设网络营销和传统营销的区别和联系
  • 贵阳网站建设管理html静态网站模板下载
  • 入侵WordPress网站怎么制作小程序商城
  • js网站开发教程微信小程序商城收费吗
  • 地方性资讯门户网站怎么去推广自己的网站
  • 专业网站建设制做的网站如何投入搜索引擎
  • 学院网站建设 需求分析wordpress图片批量链接
  • 临沂建设网站公司wordpress 插件 调用
  • 如何做psd的模板下载网站公关公司排行榜
  • 勐海县城乡建设局门户网站成都建设银行官方网站
  • 我们为什么选择做电子商务网站网页制作与网页设计简历
  • 无锡网站建设排名丹东市住房与城乡建设厅网站
  • 商城微网站建设cnc强力磁盘 东莞网站建设
  • 给网站做脚本算违法吗什么网站可以看女人唔易做
  • 微信公众号怎么做微网站网站控制面板地址
  • 中山皇冠建设开发有限公司网站美食网站制作代码
  • 凡科网站制作关键词挖掘工具
  • 西安找建网站公司网页设计app软件