转载 浅识pytest

作者:小程序猿工作日记 
原文:
https://blog.csdn.net/sinat_40297086/article/details/81566315 

作者:wanggaoxingH 
来源:CSDN 
原文:https://blog.csdn.net/wanggaoxingH/article/details/79525560 

版权声明:本人转载以上文章用于参考、学习、记录,转载请附上原博文链接!

pytest是python的第三方测试框架,是基于unittest的扩展框架,比unittest更简洁,更高效。灵活性比较好。使用python的原生断言,更易于我们理解。可以运行unittest和nose的测试用例,有很好的兼容性。插件丰富,比如flask插件,可以用于出错重跑。还有xdist插件,可以用于设备并行执行。

执行原理:

首先在所在目录下运行执行命令(比如pytest或者pytest –q下文介绍了其他特殊运行命令),
则会执行当前目录及其子目录下以test开头或者以test结尾的py文件中test开头的函数。

也就是说pytest会递归查找当前文件以及子文件夹下面所有的test_开头的py文件或_test结尾的py文件,把其当作测试文件。pytest会收集文件中的函数和方法,当作测试用例。
 

--------一些有关pytest的地址------
虫师:http://www.cnblogs.com/fnng/p/4765112.html
http://blog.sina.com.cn/s/blog_a7ace3d80102w9tx.html
刘春明:http://blog.csdn.net/liuchunming033/article/details/46501653

——————————用例编写规范————————
在 pytest 中案例的最小单位是函数/类,只要按照一定的命名规范即可:
测试文件以test_开头(以_test结尾也可以)
测试类以Test开头,并且不能带有 __init__ 方法
测试函数以test_开头

---------为什么要用断言-------
不管是功能测试,自动化测试,还是单元测试。一般都会预设一个正确的预期结果,
而在测试执行的过程中会得到一个实际的结果。测试的成功与否就是拿实际的结果与
预期的结果进行比较。这个比的过程实际就是断言(assert)


---------pytest常用断言,断言方法的使用--------
相等关系:assert 1 == 1    还有:>=,<=,!=,<,>
包含关系:assert h in hell 还有:not in
布尔值:  assert 函数(参数)  比如:assert  素数(判断是否素数的参数)
参考地址:http://www.tuicool.com/articles/yieEbaF


---------如何安装pytest--------
>pip install - U pytest
安装完成后,查看版本号
>py.test --version        # 查看pytest版本


---------pytest如何生成报告插件安装---------
这需要安装pytest的扩展--pytest-html。
> pip install pytest-html     # 通过pip安装pytest-html
参考地址:http://www.cnblogs.com/fnng/p/4768239.html


--------失败用例重复执行插件安装--------
>pip install -U pytest-rerunfailures
参考地址:http://www.cnblogs.com/sparkling-ly/p/5650413.html


--------如何执行测试脚本-------
if __name__ == '__main__':
 
    pytest.main("d:/pyse/pytest/")  # 指定测试目录
  
  --------pytest和allure-------
  allure能够生成比HTMLTestRunner更完美的测试报告,但目前python3.0以上还无法使用
参考地址:https://testerhome.com/topics/7457


[email protected]()的功能--------
fixture是pytest特有的功能,它用pytest.fixture标识,定义在函数前面。在你编写测试函数的时候,你可以将此函数名称做为传入参数,pytest将会以依赖注入方式,将该函数的返回值作为测试函数的传入参数
fixture的作用域:function、module、session ,autouse=True使得函数将默认执行
fixture的存在使得我们在编写测试函数的准备函数、销毁函数或者多个条件的测试提供了更加灵活的选择。py.test --fixtures 可以查看所有的fixtures,包含目录下及子目录下的conftest.py
参考地址:http://www.cnblogs.com/sparkling-ly/p/5708575.html
---------------销毁函数addfinalizer------------
request.addfinalizer(要销毁的函数名称)

@pytest.mark.xfail

-------------@pytest。mark是什么-----------
自定义一个mark,如下,然后 py.test -v -m webtest 只运行标记了webtest的函数, py.test -v -m "not webtest"  来运行未标记webtest的
import pytest
@pytest.mark.webtest
def test_send_http(): 
       pass # perform some webtest test for your app

-------抛出异常使用:with---------
def test_demo_exceptions():
with pytest.raises(ZeroDivisionError):
1 / 0
with pytest.raises(IndexError):
(5, 10, 15)[30]


------setup和teardown函数的使用------
# 本模块所有案例之前执行一次;典型场景:造数据、初始化客户端等
def setup_module(module):
print ("\nsetup_module ===>")


# 本模块所有案例之后执行一次
def teardown_module(module):
     print ("\nteardown_module ===>")


# 每个测试函数前执行
def setup_function(function):
     print ("\nsetup_function ->")


# 每个测试函数后执行
def teardown_function(function):
print ("\nteardown_function ->")

猜你喜欢

转载自blog.csdn.net/JR_willbeBetter/article/details/84530992
今日推荐