pytest实例,pytest运行规则
一、pytest的优点非常好用,入门简单,文档丰富。文档中有很多例子可以借鉴,可以自动识别测试模块和测试功能。它支持使用简单的assert语句实现丰富的断言,不需要复杂的self.assert*函数来支持参数化执行。有些测试可以在测试过程中跳过。或者xfail处理将一些预计会失败的情况标记为失败,并支持重新运行。失败案例支持运行nose编写的测试案例,unittest,可以生成html报告。便捷的持续集成工具jenkins integration可以支持执行。有些用例有很多第三方插件,比如报表插件pytest-html,allure-pytest,失败重试插件pytest-rerunfailures,可以自定义扩展2。安装和测试用例编写规则1。安装#安装
pip安装-U pytest
#更改源安装
pip3安装pytest-I http://pypi.douban.com/simple/可信主机pypi.douban.com
#查看版本
pytest-版本2。测试用例编写规则。PY test的测试用例不需要像unittest一样先被测试类继承。只需要满足测试用例条件,函数和类方法都可以作为测试用例。
1.测试模块(py文件)的名称必须是test_*。py或* _ test.py
2.目录中的所有包都必须有__init__。py文件,以便包中的模块(py文件)可以被识别为测试模块。
3.测试类的类名必须以Test开头,并且不能包含__init__方法。否则,即使类中有以test开头的方法,也不会被执行。
4.测试用例名称必须以test_开头,无论是测试类下的单个函数还是方法,否则不会被识别为测试用例。3.命令行执行测试用例应用场景:自动化测试需要自动执行命令来运行脚本。
1.基本命令操作方式:cd将目录切换到目标目录,通过执行以下命令可以执行不同的测试用例:
Py # [All] cd到一个目录下,执行目录下所有的合规模块和测试用例。
Pytest test_01.py # [module]执行test_01.py模块下的所有测试用例。
test-vt est _ 01 . py:test_3 #[函数]运行test_01.py模块中的test _ 3用例。
py test_01.py:TestClass #[class]运行test _ 01 . py模块中test class类下的所有用例。
py test_01.py:test class:test _ 4 #[Method]运行test _ 01 . py模块中的一个类和一个类中的方法。
2.命令的可用参数除了基本命令,我们还可以添加各种参数来实现不同的执行和打印效果。请参见以下常见参数:
-x #遇到错误时停止测试===============================================================
pytest start.py -x
- maxfail=num,当用例错误数量达到指定数量时,停止测试============================================================
pytest start.py - maxfail=1
-k #根据用例名称筛选一些要执行或不要执行的用例==============================================================
py-py test-v-k test_4 test _ 01 . py #-k k匹配用例名称,执行测试用例名称包含test _ 4的所有用例。
Py-v-k test _ 4或test _ 5 test _ 01.py #多个条件用于匹配用例名称,可以执行一个。
Test-v-k nottest_4 test _ 01.py #根据用例名称排除一些名称包含test_4的用例。
-m[标记表达式] #只运行用给定标记表达式标记的用例(用例需要提前用自定义标记进行标记)。更多详情,点击这里=============================
例如:
@pytest.mark.mark1
定义测试_01():
及格
test-m mark 1 01 _ test . py # 01 _ test . py中的其他用例被取消,相当于对用例进行标记,对用例进行分类,执行一类用例。
pytest -m 标记1而非标记2 01_test.py
#打印相关报告
-v,-verbose #详细打印,比默认报告更多会话部分的执行结果和进度信息==================================
pytest -v start.py
-q,-quiet #简单打印,没有整个会话块(平台版本,python和pytest等版本信息,执行结果)=====
-r [chars] #显示由字符指定的附加测试摘要信息,该信息可以是多个(默认 fE 仅显示错误和失败情况)=================================
# chars可选:(f)失败,(e)错误,(s)跳过,(x)失败,(x)通过,(p)通过输出断言,(a) ll除了通过(p/p)或(a) ll
Pytest -rfEp -v 01_test.py #详细打印,结果显示有三种故障错误,运行效果如下图所示。
-s #用例与打印信息相关,默认情况下用例失败时输出,通过时不输出。如果加上这个,Captured staout调用输出信息功能会关闭(用例成功或失败都不会输出),但会显示在测试会话开始部分,看起来更好,相当于-capture=no。
#其他
- markers #显示标记(每个项目的内置、插件和标记)
-x,-exitfirst #当第一个错误或测试失败时立即退出。
- runxfail #报告xfail测试的结果,就像它们没有被标记一样。
-lf - lf,- last-failed #只重新运行上次失败的测试(如果没有失败,全部重新运行)。图1: -rfEp执行效果
图2:默认,-v和-q报告的比较
图3: -s效应
四。pytest案例的执行顺序。unittest中的测试用例是按照ASCII码的顺序加载的,数字和字母的顺序是:0-9,A-Z,A-Z,所以会先执行以A开头的测试用例方法,会后执行以A开头的方法。
默认情况下,pytest中同一个py文件中的用例是按照文件从上到下的顺序执行的,但是有一个插件可以让我们自定义执行顺序,让执行顺序更加随意。详见:宁静博客。
5.pycharm执行测试用例。第一步:使用所有的编辑器来编写测试用例。用cmd来执行它们很麻烦。可以直接按照下图在pycharm中设置它们,然后用pytest运行代码。
第2步:右键单击以执行测试用例:
1)执行整个目录:先点击鼠标最左边的目录,右键执行,该目录下的所有用例都会被执行。
2)执行某个模块:鼠标点击最左边的模块,或者点击py文件中的空白处,右键执行。
3)执行整个测试类:鼠标点击类名,右键执行。
4)执行函数或类的方法:鼠标点击函数,右键执行。
转载请联系作者授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。