感谢大家关注,帮忙分享呦,你们的阅读就是我的动力!!!
公众号:小李测试随笔


第六章 应用pytest测试框架6.1-6.3章节
pytest是一个非常成熟的全功能的python测试框架,主要有以下几个特点:
简单灵活,容易上手
支持参数化
能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appium等自动化测试,接口自动化测试(pytest+request)
pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等
测试用例的skip和xfail处理
可以很好的和Jenkins集成
report框架----allure 也支持了pytest
本章节将通过实例带你一起应用pytest测试框架
6.1 pytest测试框架的安装

pytest测试框架的安装命令为pip3 insatll pytest
安装过程如图


6.2 验证pytest是否安装成功

pytest测试框架安装完成后,通过pycharm导入pytest测试框架,并通过dir()函数来查看pytest测试框架的方法,如果能正常输出pytest测试框架的方法,则表明pytest测试框架安装成功。

6.3 函数和方法的执行规则

6.3.1 函数的执行规则

在pytest测试框架中,接口用例可以直接封装在函数中,自动执行。但并不是每个函数都会自动执行,例如在很多的接口测试中,会碰到上下游接口有依赖关系,就需要设置动态参数来处理依赖关系。读取或处理动态参数的函数并不需要自动执行,而是需要间接被调用。那么在什么情况下函数会自动执行?什么情况下函数不会自动执行呢?pytest框架都有它既定的执行规则。默认情况下,pytest测试框架会以选择以test打头的函数自动执行,而不以test打头的函数则不自动被执行
import pytest
#此函数以test打头,会被执行
def test_login():
print('我是会被执行的')
#此函数以test打头,会被执行
def testlogin():
print('我也是会被执行的')
#此函数不以test打头,不会被执行
def logintest():
print('我也是会被执行的')
#此函数不以test打头,不会被执行
def login_test():
print('我也是会被执行的')
#此函数不以test打头,不会被执行
def logintesting():
print('我也是会被执行的')
if __name__ == '__main__':
'''运行方式,直接在文件内执行以下命令
其中,-v参数显示命令执行过程,-s参数显示打印的信息
如不加-s参数,则print()函数打印的信息不会显示'''
pytest.main(['-s','-v','【例 6-1】 以 test 打头的函数将自动执行.py'])运行结果如下

更多说明:运行方式中,除通过pytest.main(['-s','-v','【例 6-1】 以 test 打头的函数将自动执行.py'])的运行方式外,还可以通过命令行方式(cmd)运行程序,需要切换到运行文件所在目录下,直接执行pytest -v -s Test.py来运行程序
6.3.2 方法的执行规则

在pytest测试框架中,接口用例可以直接封装在函数中进行自动执行,但更多的搜索将接口测试用例封装在类的方法中。类似的,封装在类中的方法并不都会自动执行。默认情况下,如果类名以Test打头,则此类下面所有以test打头的方法都会自动执行,而不是test打头的方法则不会被执行
import pytest
#定义TestOrdering类
class TestOrdering():
#定义test_login()方法
def test_login(self):
print("正在登录")
#定义test_add()方法
def test_add(self):
print("正在增加")
#定义test_del()方法
def test_del(self):
print("正在删除")
if __name__ == '__main__':
'''运行方式,直接在文件内执行以下命令
其中,-v参数显示命令执行过程,-s参数显示打印的信息
如不加-s参数,则print()函数打印的信息不会显示'''
pytest.main(['-s','-v','【例 6-2】 类名以 Test 打头(T 是大写),所有以 test 打头的方法会自动执行.py'])结果



END