python自动化学习笔记之pytest

特点:
1,代码风格比较自由,可单独定义方法,也可将方法封装到class里
2,参数化执行,可灵活配置测试计划
3,可生成xml报告,方便结果分析及jenkins集成


安装可以直接pip install pytest
文件名定义:test_*.py or *_test.py
类定义:Test开头
方法定义:test_开头(官网要求,但是自己试着不带_也可以)
代码示例:
import pytest

# 基础方法调用也可以放到专用目录中
class BaseFunc:
    @staticmethod
    def base_func(x):
        return x+1

@pytest.mark.mymark1		
def test_myfunc1():
    print('im in test_myfunc1')
    assert BaseFunc.base_func(1) == 2
	
def test_myfunc2():
    print('im in test_myfunc2')
    assert BaseFunc.base_func(2) == 2

		
class TestClass_cls1:
    # 测试类不能有__init__构造函数
    # 同样支持setup和teardown,每个case均单独执行一次
    def setup(self):
        print('has been setup!!! cls1')

    def teardown(self):
        print('has been teardown!!!  cls1')

    # 静态方法也可以执行,但是不能再用mark注解
    @staticmethod
	def test_func1():
        print('im in func1 cls1')
        assert BaseFunc.base_func(1) == 2

    @pytest.mark.mymark2
    def test_func2(self):
        print('im in func2 cls1')
        assert BaseFunc.base_func(2) < 2
		
    def test_func3(self):
        print('im in func3 cls1')
        assert BaseFunc.base_func(0) > 2

if __name__ == "__main__":
    pytest.main(['-v', 'study2_test.py', '-m', 'mymark1'])
    # 以下方式会执行study2_test.py所在目录下包含但不限于study2_test.py的所有case文件
    # pytest.main()

常用参数:
pytest -q 静默模式,只输出异常case
pytest -v 详细,显示明细及case结果标志灯
pytest casefile.py 指定case文件执行
pytest casedir 指定路径运行
pytest casedir/casefile::caseclass::casefunc 运行具体的case方法、类等
pytest --pyargs pkgname 指定包执行,根据系统文件路径定位case,后期可以用pip安装包的方法部署执行case
pytest -k "key_words_1 and not key_words_1" 执行符合key_words_1命名规则的文件、类及方法,忽略key_words_2命名规则的文件、类及方法
pytest -m "mark_name" 需要在指定case方法上添加@pytest.mark.mark_name来指定方法属于哪个mark
pytest --junitxml=file.xml 生成xml报告,方便对执行结果进一步分析,后期可以通过xmltodict库转成json格式分析入库及自定义报告
pytest --html=./report.html 生成html格式报告,需要提前安装pytest-html模块,个人测试时发现生成的html报告没有teardown里面的内容,控制台却是有teardown里的内容输出的,这算是个小bug?


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值