zoukankan      html  css  js  c++  java
  • python pytest测试框架介绍一

    一、安装

       pytest不是python默认的package,需要自动手工安装。

       pytest支持python 2.6--3.5之间的版本,同时可以在unix及windows上安装

       安装方式:   

    pip install pytests

    安装完成后,可以查看版本:

    pytest --version
    This is pytest version 3.1.2, imported from c:python27libsite-packagespytest.pyc

    二、最简单实例

    根据pytest官方文档得来

    def func(x):
        return x + 1
    
    def test_answer():
        assert func(3) == 5

    运行测试后结果如下:

    从上图看来,pytest的结果相比美观点,还有颜色来区分,这个是一两点

    三、pytest 帮助

    pytest带有很多参数,可能使用pytest --help来查看

    pytest --help

    下面列举几个常见的参数:

    1、-k EXPRESSION

    执行某个关键字的用例
    用例要匹配给出的表达式;使用python的语法,匹配的范围是文件名、类名、函数名为变量,用and来区分

    如下面一段测试用例

    class TestClass(object):
         def test_zne(self):
             x = "this"
             assert 'h' in x
     
         
         def test_two(self):
             x = "hello"
             assert hasattr(x, 'check')
             
         def test_a(self):
             assert 1==2

    运行pytest时带-k参数

    pytest -k "pytest and TestClass and not test_a"  pytest_lean1.py

    结果如下

    可以看出,test_a这个用例被取消选择了,没有运行了

    2、-x, --exitfirst

    当遇到错误时停止测试

    下面实例

     def func(x):
         return x+1
     
     def test_answer():
         assert func(3) ==5
    
     def test_bb()
         pass

    运行时带如下参数;

    pytest -x  pytest_lean1.py

    结果如下

    3、--maxfail=num

    当错误个数到达给定数时,退出测试,这里就不列举实例了,结果与-x类似

    4、-m MARKEXPR

      只能运行有相应标识的测试用例,使用这个参数,测试用例要使用@pytest.mark.marker修饰

      如下实例

    class TestClass(object):
         def test_zne(self):
             '''new_etests'''
             x = "this"
             assert 'h' in x
     
         @pytest.mark.slow
         def test_two(self):
             '''new_sssetests'''
             x = "hello"
             assert hasattr(x, 'check')
             
         def test_a(self):
             assert 1==2

    teste_two使用了@pytest.mark.slow来修饰

    在使用时,使用如下参数

    pytest –m slow pytest_lean.py

    结果如下

    从上图中可以看出,只运行了一个我们带有标识的用例。

    注意,-m后面不能带''号(单引号),只能带“”(双引号),不然识别不到

    如果要运行多个标识的话,用表达式,如下

    pytest -m "slow or faster"   运行有slow标识或 faster标识用例
    pytest -m "slow and faster"  运行有slow和faster标识的用例
    pytest -m "slow and not faster"  运行有slow和没有faster标识的用例

     5、--pdb

    当出现错误时,进入调试

    但在实例项目中,我们一般不用这个参数,更多的是用python自有的pdb来调试,

    如下

    import pdb
    ....
    pdb.set_trace()
    ....

    6、 -v, --verbose

    详细结果

    7、-q, --quiet

     极简结果显示

    8、--junit-xml=path

    输出xml文件格式,在与jenkins做集成时使用

    9、 --result-log=path

    将最后的结果保存到本地文件中

  • 相关阅读:
    Linux Core Dump
    ODP.NET Managed正式推出
    获取EditText的光标位置
    (Java实现) 洛谷 P1603 斯诺登的密码
    (Java实现) 洛谷 P1603 斯诺登的密码
    (Java实现) 洛谷 P1036 选数
    (Java实现) 洛谷 P1036 选数
    (Java实现) 洛谷 P1012 拼数
    (Java实现) 洛谷 P1012 拼数
    (Java实现) 洛谷 P1028 数的计算
  • 原文地址:https://www.cnblogs.com/landhu/p/7461501.html
Copyright © 2011-2022 走看看