首页 > 其他 > 详细

Pytest用法之mian函数

时间:2020-09-30 09:29:55      阅读:56      评论:0      收藏:0      [点我收藏+]
简介

Pytest是当下首先的Python项目单元测试工具。测试时,使用方法有两种:

  • 命令行方式(传递给Pytest各种参数)
  • 在代码中直接执行pytest并调用main函数(传递进各种参数)

本文将小结使用第二种方式中main函数各种参数的使用问题。

无参形式

#一些测试单元……
if name == ‘main’:
pytest.main()
不带任何参数的main()默认运行的是当前目录及子目录的所有文件夹的测试用例。

参数

Main()函数加参数时指定运行规则时,参数需要放在列表中。可以指定参数和路径,常用的参数有:
(1)‘-s’:关闭捕捉,输出打印信息。
(2)‘-v’:用于增加测试用例的冗长。
(3)‘-k’ :运行包含某个字符串的测试用例。如:pytest -k add XX.py 表示运行XX.py中包含add的测试用例。
(4)‘q’:减少测试的运行冗长。
(5)‘-x’:出现一条测试用例失败就退出测试。在调试阶段非常有用,当测试用例失败时,应该先调试通过,而不是继续执行测试用例。

基础示例

import pytest

@pytest.mark.webtest
def test_send_http():
pass # perform some webtest test for your app

def test_something_quick():
pass

def test_another():
pass

class TestClass:
def test_method(self):
pass

if name == "main":
pytest.main([‘-q‘])

更复杂情形

指定某个测试类或测试方法,用“::”隔开。如:
命令行格式:
pytest 文件名.py::测试方法
代码行格式:
pytest.main([模块.py::类或方法])

指定某个测试类下的测试方法,用“::”隔开。如:
命令格式:
pytest 文件名.py::测试类::测试方法
代码行格式:
pytest.main([模块.py::类::方法])

pytest.main(["testCase/campaign/test_campaign_list.py::TestListCampaign::test_list_campaign_success"])
指定运行某个目录下的某个用例,其中路径为当前执行文件的相对路径
pytest.main(["testCase/campaign/test_campaign_list.py"])
运行某个目录下的全部用例,写到文件夹名字即可,不需要写到py文件
pytest.main(["testCase/campaign/"])

其他情形:

使用-m对用例进行标记,用例需注释@pytest.mark.xxx,将xxx作为参数传入
使用-m "mark1 and mark2"可以同时选中带有这两个标记的所有测试用例。
使用-m "mark1 and not mark2"选中带哟与mark1的测试用例,而过滤掉带有mark2的测试用例
使用-m "mark1 or mark2"则选中带有mark1或者mark2的所有测试用例
"""
pytest.main(["-v","-x"])#-x 遇到错误即停止
pytest.main(["-v","--maxfail=2","--tb=no"])#--maxfail=n 设定最多失败 n 次即停止
pytest.main(["-s"])#允许终端运行时输出某些结果,例如print
pytest.main(["--lf"])#定位失败的用例
pytest.main(["--ff"])#定位失败的用例首先执行,但是正常的用例也会执行
pytest.main(["-q"])#简化输出信息

pytest.main(["-l"])#打印失败用例的变量值

pytest.main(["--tb=short"])

小结

个人感觉,Pytest最经典用法还是命令行方式,因此,充分熟悉其常用参数是熟练进行单元测试的基础。因此,本人建议本文介绍的代码行内方式宜主要作为测试量较少且简单情况下测试使用。

Pytest用法之mian函数

原文:https://blog.51cto.com/zhuxianzhong/2539365

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!