当前位置:首页 > 数码 > b-优雅地启动Python测试-入门Pytest-b (优雅地输)

b-优雅地启动Python测试-入门Pytest-b (优雅地输)

admin5个月前 (05-05)数码14

一、引言

当触及到/target=_blankclass=infotextkey>Python的测试框架时,pytest是一特性能弱小且宽泛运行的第三方库。它提供繁复而灵敏的形式来编写和口头测试用例,并具备宽泛的运行场景。上方是pytest的引见和详细经常使用说明。

pytest是一个用于python单元测试的框架,它建设在规范的unittest模块之上,并提供了更繁复、更易于经常使用的语法格调。它允许丰盛的断言库,提供丰盛的插件和裁减性,可以轻松地启动测试的编写、口头和报告。pytest的设计哲学强调可读性、灵敏性和可裁减性,使得它适用于各种单元测试和集成测试场景。

在经常使用pytest工具之前,咱们有必要了解一下python的一个关键字assert。

二、assert关键字

assert是python中的一个关键字,用于在代码中口头断言。它用于审核一个条件能否为真,假设条件为假,则会引发AssertionError异常,以批示代码中的失误或异常状况。assert语句通常在调试和测试中经常使用,用于验证程序的正确性。经常使用方法如下:

1.基本经常使用

assert语句的普通用法如下:

assertcondition,message

其中:

示例:

defdivide(a,b):assertb!=0,"除数不能为零"returna/bresult=divide(10,0)print(result)

在上方的示例中,咱们定义了一个divide函数,它口头两个数相除的操作。在口头除法之前,咱们经常使用assert语句来确保除数b不为零,假设为零,则会引发AssertionError异常,并在失误信息中指定除数不能为零的要素。

2.留意事项

assert语句关键用于调试和测试目标,因此在正式消费代码中经常使用时要审慎,并留意在所需的状况下经常使用适当的异常处置机制。

断言的目标是在运转时审核代码的假定条件,并协助捕捉潜在的失误。它不应该用于处置预期的失误状况(例如输入验证),而应该用于审核不应该出现的状况。

3.小结

assert关键字是python中的一个断言语句,用于审核条件的虚实,并在条件为假时引发AssertionError。它用于调试和测试目标,协助识别代码中的失误或异常状况。但请留意,在正式消费代码中经常使用时要审慎,并遵照适当的异常处置机制。

聊完了,assert,接上去咱们可以深化了解一下pytest这个第三方库在代码测试方面的经常使用。

三、pytest代码测试

它提供了繁复而灵敏的形式来编写和口头测试用例,并且具备宽泛的运行场景。以下是一些关于Pytest的引见:

1.经常使用方法

装置pytest,可以经常使用pip装置pytest:

pipinstallpytest

编写测试用例:pytest经常使用一种基于函数的形式编写测试用例。创立一个以test_扫尾的函数,依据须要减少断言来验证预期结果。示例代码如下:

deftest_addition():assert1+1==2deftest_subtraction():assert5-2==3

运转测试:在命令行中,运转以下命令来口头测试用例:

pytest将会智能发现名目中以test_扫尾的函数,并口头这些函数作为测试用例。

上方给出一个方便的测试用例:

classBag:def__init__(self,maxsize=10):self.size=maxsizeself._item=[]defadd(self,item):iflen(self)>=self.size:rseException('full')self._item.end(item)defremove(self,item):self._item.remove(item)def__len__(self):returnlen(self._item)def__iter__(self):foriteminself._item:yielditemdeftest_bag():bag=Bag()bag.add(1)bag.add(2)bag.add(3)assertlen(bag)==3bag.remove(3)assertlen(bag)==2foriteminbag:print(item)if__name__=='__main__':test_bag()

运转如下:

2.断言和测试标志

pytest允许宽泛的断言,包含assert语句、经常使用内置assertions模块的自定义断言和第三方断言库,例如pytest-assume和pytest-check。

可以经常使用测试标志来组织和过滤测试用例。例如,经常使用@pytest.mark.skip标志来跳过某些测试,经常使用@pytest.mark.parametrize成功参数化测试。

3经常使用插件和裁减:

pytest具备丰盛的插件生态系统,可以经过装置和性能插件来裁减其性能。例如,有插件用于生成详细的测试报告、允许测试笼罩率的审核和集成、散布式测试等。

您可以经常使用pytest.fixture装璜器创立和共享测试固件,经常使用pytest.mark标志来控制测试的选用和口头,经常使用插件来生成详细报告、启动性能测试等。

优雅地启动Python测试

测试性能文件:

可以经过创立pytest.ini或setup.cfg等性能文件来自定义pytest的行为。可以性能测试文件的婚配形式、报告格局、插件设置等。

pytest框架具备很强的灵敏性和裁减性,适用于各种python测试场景。它提供了直观的语法、丰盛的断言和插件生态系统,使得测试编写和口头变得愈加方便和高效。

pytest--help

运转上述命令可以取得更多关于pytest的命令行选项和用法信息。

这是对pytest的简明引见和经常使用说明。请留意,这只是一个方便的入门指南,宿愿这个更完整的引见和经常使用说明能协助您开局经常使用pytest启动python测试。假设有其余疑问或许斧正,请随时提问与我交流!

四、总结

总而言之,Pytest作为一特性能弱小的第三方测试库,为Python开发者提供了优雅且方便的形式来编写和口头测试。本文引见了Pytest的基础概念和经常使用方法,包含经常使用繁复的语法编写测试用例、智能发现测试文件、丰盛的断言允许以及参数化测试等。

咱们还深化讨论了如何应用夹具来组织测试环境和共享设置代码片段。经过经常使用Pytest插件,咱们可以自定义和裁减测试性能,例如生成详细的测试报告、审核测试笼罩率和并行运转测试。经过学习和把握Pytest,咱们能够更轻松地编写高品质的测试,提高Python运行程序的品质和牢靠性。

Pytest的方便适用性使其成为任何Python开发者测试工具箱中必无法少的一局部。


怎么用python做自动化测试?

这里以web自动化测试为例,简单介绍一下如何使用python进行web自动化测试,主要用到selenium这个框架,实验环境win10+python3.6,主要内容如下:

1.首先,安装selenium框架,这个直接在cmd窗口输入命令“pipinstallselenium”就行,如下,安装非常快:

2.安装完成后,还需要安装浏览器驱动程序,不然直接运行程序会报错,以谷歌浏览器chrome为例,需要下载chromedriver驱动程序,如下,这里chromedriver的版本必须要与自己平台浏览器的版本匹配:

下载完成后,是一个zip压缩包,里面就一个文件,这里需要将这个文件复制到python安装目录下,如下:

3.最后,我们就可以进行selenium框架测试了,测试代码如下,非常简单,创建一个webdriver,如果能正常打开对应网页,则说明selenium安装成功:

之后就可以直接定位相关元素,进行web自动化测试了,主要方法如下(共有8种),分别是id、name、classname、tagname、linktext、partiallinktext、xpath和cssselector,这里可以自行测试,相关资料非常丰富:

至此,我们就完成了pythonweb自动化测试框架selenium的安装和简单使用。总的来说,整个过程非常简单,只要你有一定的python基础,熟悉一下上面的安装过程,很快就能搭建好本地selenium自动化测试框架,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。

Python基础之pytest参数化

pytest是目前比较成熟功能齐全的测试框架,使用率肯定也不断攀升。 在实际 工作中,许多测试用例都是类似的重复,一个个写最后代码会显得很冗余。 这里,我们来了解一下 装饰器,可以很好的解决上述问题。 释义:参数名称 格式:字符串arg1,arg2,arg3 释义:参数值列表 格式:必须是列表,如[val1,val2,val3] 单个参数,里面是值的列表,如(name,[Jack,Locus,Bill]) 多个参数,需要用元祖来存放值,一个元祖对应一组参数的值,如(user,age,[(user1,15),(user2,24),(user3,25)]) 释义:可以理解为用例的id 格式:字符串列表,如[case1,case2,case3] 释义:当indirect=True时,若传入的argnames是fixture函数名,此时fixture函数名将成为一个可执行的函数, argvalues作为fixture的参数,执行fixture函数,最终结果再存入 ;当indirect=False时,fixture 函数只作为一个参数名给测试收集阶段调用。 备注:这里可以将the setup phase(测试设置阶段)理解为配置 阶段,将the collection phase( 测试收集阶段)理解为用例执行阶段。 由以上代码可以看到,当装饰器装饰测试类时,定义的数据集合会被传递给类的所有方法。 当测试用例只需要一个参数时,我们存放数据的列表无序嵌套序列,(name, data) 装饰器的第一个参数也只需要一个变量接收列表中的每个元素,第二个参数传递存储数据的列表,那么测试用 例需要使用同名的字符串接收测试数据(实例中的name)且列表有多少个元素就会生成并执行多少个测试用例。 当测试用例需要多个数据时,我们可以使用嵌套序列(嵌套元组&嵌套列表)的列表来存放测试数据。 装饰器()可以使用单个变量接收数据,也可以使用多个变量接收,同样,测 试用例函数也需要与其保持一致。 当使用单个变量接收时,测试数据传递到测试函数内部时为列表中的每一个元素或者小列表,需 要使用索引的方式取得每个数据。 当使用多个变量接收数据时,那么每个变量分别接收小列表或元组中的每个元素列表嵌套多少个多 组小列表或元组,测生成多少条测试用例。 通过测试结果,我们不难分析,一个测试函数还可以同时被多个参数化装饰器装饰,那么多个 装饰器中的数据会进行交叉组合的方式传递给测试函数,进而生成n * n个测试用例。 输出结果显示收集到4个用例,两个通过,一个被跳过,一个标记失败,当我们不想执行某组测试 数据时,我们可以标记skip或skipif;当我们预期某组数据会执行失败时,我们可以标记为xfail等。 参数化装饰器有一个额外的参数ids,可以标识每一个测试用例,自定义测试数据结果的显示, 为了增加可读性,我们可以标记每一个测试用例使用的测试数据是什么,适当的增加一些说明。 在使用前你需要知道,ids参数应该是一个字符串列表,必须和数据对象列表的长度保持一致。 不加ids参数的返回结果 加ids参数的返回结果 我们可以看到带ids参数的返回结果中的用例都被一个列表明确的标记了,而且通过这种标记 可以更加直观的看出来,每个测试用例使用的数据名称及测试内容。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: Python

“b-优雅地启动Python测试-入门Pytest-b (优雅地输)” 的相关文章

Python中的LEGB规则 (python怎样打开)

Python中的LEGB规则 (python怎样打开)

Python 中的 LEGB 规则决定了变量和函数的作用域解析顺序。它代表了四个作用域层级: 局部作用域 闭包函数外的函数 全局作用域 内置作用域...

处置日常义务的终极工具!-Python-文件读写实战 (处置行为是什么意思)

处置日常义务的终极工具!-Python-文件读写实战 (处置行为是什么意思)

/target=_blankclass=infotextkey>Python文件的读写操作时,有很多须要思考的细节,这包含文件关上形式、读取和写入数据的方法、意外处置等。 在本文中,...

Python中的Random模块-摸索随机性的神奇环球 (python编程)

Python中的Random模块-摸索随机性的神奇环球 (python编程)

随机性在计算机编程和数据迷信中表演着至关关键的角色。/target=_blankclass=infotextkey>Python中的random模块提供了丰盛的工具和函数,协助咱们生成随机数...

惰性求值和lambda表达式的强大组合-Python高级技巧 (惰性求值和逻辑短路)

惰性求值和lambda表达式的强大组合-Python高级技巧 (惰性求值和逻辑短路)

Lambda 表达式 在 Python 中,Lambda 表达式是一个匿名函数,它可以在需要函数对象的地方使用。Lambda 表达式的语法如下: lambda arguments: exp...

一份收藏者必备清单-100个精选Python库 (收藏者的心态)

一份收藏者必备清单-100个精选Python库 (收藏者的心态)

/target=_blankclass=infotextkey>Python为啥这么火,这么多人学,就是由于繁难好学,性能弱小,整个社区十分生动,资料很多。而且这言语触及了方方面面,比如智能...

掌握网络世界的无限可能-Python分布式爬虫助力搜索引擎打造 (掌握网络世界的好处)

掌握网络世界的无限可能-Python分布式爬虫助力搜索引擎打造 (掌握网络世界的好处)

主从模式 主从模式是一种简单的分布式爬虫架构,其中一台主机作为控制节点,负责管理所有运行爬虫的从机。 主节点负责向从机分配任务,并接收新生成的任务。从机只需要从主节点接收任务,并把新生...

轻松把握多线程和多进程-Python编程进阶 (多线是什么意思)

轻松把握多线程和多进程-Python编程进阶 (多线是什么意思)

1、简介 咱们将讨论如何应用/target=_blankclass=infotextkey>Python口头多线程和多进程义务。它们提供了在单个进程或多个进程之间口头并发操作的方法。并...

生成-UUID-操作-Python-齐全指南-格局和经常出现疑问 (生成uuid java)

生成-UUID-操作-Python-齐全指南-格局和经常出现疑问 (生成uuid java)

UUID(UniversallyUniqueIdentifier,通用惟一标识符)是一种全局惟一标识符生成形式,用于创立举世无双的标识符。/target=_blankclass=infotextk...